home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / algernon / mcedit.bas < prev    next >
BASIC Source File  |  1993-07-08  |  66KB  |  1,619 lines

  1. 100 '--------------------  VIL組み込み開始 --------------------
  2. 110 CLEAR ,,512,1024*700,0,0                      'メモリ領域設定
  3. 120 SCREEN 0:CLS
  4. 130 VIL_W0=0:VIL_W1=0:VIL_W2=0:VIL_W3=0:VIL_W4=0  '汎用ワーク変数
  5. 140 VIL_W5=0:VIL_W6=0:VIL_W7=0:VIL_W8=0:VIL_W9=0
  6. 150 VIL_W0$="":VIL_W1$="":VIL_W2$="":VIL_W3$=""
  7. 160 VIL_I=0:VIL_J=0:VIL_K=0                       'ループ変数
  8. 170 VIL_A$=""                                     '文字列汎用
  9. 180 VIL_F$=""                                     'ファイル名汎用
  10. 190 VIL_C=15:VIL_CB=0                             '描画色・背景色(0..15)
  11. 200 VIL_X=0:VIL_Y=0:VIL_W=0:VIL_Z=0               '左上隅・右下隅座標
  12. 210 VIL_XL=0:VIL_YL=0:VIL_XN=0:VIL_YN=0           'X・Y軸方向長さ・個数
  13. 220 VIL_P=0                                       'パレット番号
  14. 225 VIL_KN=0                                      '入力番号
  15. 226 VIL_K$="":VIL_KY=0                            '入力キーとアスキーコード
  16. 227 VIL_MX=0:VIL_MY=0:VIL_MW=0:VIL_MZ=0           'マウス位置
  17. 230 '
  18. 240 VIL_E=0                                       'エラー番号
  19. 250 VIL_DIR$=""                                   'VILディレクトリ
  20. 260 VIL_FMTDIR$=""                                'FMTITLEディレクトリ
  21. 270 VIL_VER=100                                   'VIL VER1.00
  22. 280 '
  23. 290 *VIL_CNF                              '設定ファイル"CONFIG.VIL"読込
  24. 300 PRINT"Searching "+CHR$(34)+"CONFIG.VIL"+CHR$(34)
  25. 310 PRINT"Searching current directory"
  26. 320 GOSUB *VIL_ERR_ON:VIL_E=0
  27. 330 OPEN "I",#1,"CONFIG.VIL"              'カレントディレクトリを探す
  28. 340 IF VIL_E=63 THEN
  29. 350   PRINT"Searching root directory"
  30. 360   VIL_E=0
  31. 370   OPEN "I",#1,"\CONFIG.VIL"           'ルートディレクトリを探す
  32. 380   IF VIL_E=63 THEN                    '見つからなければ設定中止
  33. 390     PRINT"WARNING:"+CHR$(34)+"CONFIG.VIL"+CHR$(34)+" not found"
  34. 400     GOTO *VIL_L_BGN
  35. 410   ENDIF
  36. 420 ENDIF
  37. 430 PRINT"Reading "+CHR$(34)+"CONFIG.VIL"+CHR$(34)
  38. 440 WHILE EOF(1)=0
  39. 450   LINE INPUT #1,VIL_W0$
  40. 460   IF LEFT$(VIL_W0$,1)<>"'" THEN              'コメント行スキップ
  41. 470     IF INSTR(VIL_W0$,"VILDIR") THEN          'VILディレクトリ設定
  42. 480       VIL_DIR$=MID$(VIL_W0$,INSTR(VIL_W0$,"=")+1)
  43. 490     ELSE IF INSTR(VIL_W0$,"FMTITLEDIR") THEN 'FMTITLEディレクトリ設定
  44. 500       VIL_FMTDIR$=MID$(VIL_W0$,INSTR(VIL_W0$,"=")+1)
  45. 510     ENDIF
  46. 520   ENDIF
  47. 530 WEND
  48. 540 CLOSE #1
  49. 550 '
  50. 560 *VIL_L_BGN                                ' VIL リンク開始
  51. 570 ON ERROR GOTO 0
  52. 610 *VIL_L_END                                ' VIL リンク終了
  53. 620 '
  54. 630 GOSUB *VIL_ERR_ON
  55. 640 GOSUB *VIL_DEFFN:GOTO *VIL_INITEND
  56. 650 '
  57. 660 *VIL_ERR_ON:ON ERROR GOTO *VIL_ERR:RETURN
  58. 670 *VIL_ERR:VIL_E=ERR:RESUME NEXT
  59. 680 '
  60. 690 *VIL_DEFFN
  61. 700 '  S$:文字列に変換 SS$:左にスペースを詰める S0$:左に0を詰める
  62. 710 '  P :正の整数     I  :整数                 R  :実数
  63. 720 DEF FNVIL_P2S$(X)   =MID$(STR$(X),2)
  64. 730 DEF FNVIL_P2SS$(X,Y)=RIGHT$("          "+STR$(X),Y)
  65. 740 DEF FNVIL_P2S0$(X,Y)=RIGHT$("0000000000"+MID$(STR$(X),2),Y)
  66. 750 DEF FNVIL_I2S$(X)   =MID$(STR$(X),1-(X>=0))
  67. 760 DEF FNVIL_I2SS$(X,Y)=RIGHT$("         "+STR$(X),Y)
  68. 770 '符号1桁(+-) + 00… + 数値
  69. 780 DEF FNVIL_I2S0$(X,Y)  =MID$("+-",1-(X<0),1)                                                        +RIGHT$("0000000000"+MID$(STR$(ABS(X)),2),Y-1)
  70. 790 DEF FNVIL_R2S$(X)     =MID$(STR$(X),1-(X>=0))
  71. 800 DEF FNVIL_R2SS$(X,Y,Z)=RIGHT$("         "+STR$(FIX(X)),Y)+"."                                      +MID$("0000000000"+STR$(X)+"0000000000"                                           ,INSTR("0000000000"+STR$(X),".")+1,Z)
  72. 810 DEF FNVIL_R2S0$(X,Y,Z)=MID$("+-",1-(X<0),1)+RIGHT$("0000000000"               +MID$(STR$(FIX(ABS(X))),2),Y-1)+MID$("0000000000"+STR$(X)+"0000000000"                                           ,INSTR("0000000000"+STR$(X),".")+1,Z)
  73. 820 RETURN
  74. 830 '
  75. 840 *VIL_INITEND
  76. 850 '--------------------  VIL組み込み終了 --------------------
  77. 10000 '<<<<<<<<<<<<<<<<<<<< MOUSE CURSOR EDITOR >>>>>>>>>>>>>>>>>>>>
  78. 10040 PLAY OFF
  79. 10045 'ON ERROR GOTO 0'***
  80. 10220 '<<<<<<<<<<<<<<<<<<<<  VIL INITIALIZE  >>>>>>>>>>>>>>>>>>>>
  81. 10230 '
  82. 10240 GOSUB *VIL_BEEP_INITM
  83. 10250 '
  84. 10260 VIL_W0=1024*500\2             '画面退避(最大ウィンドウ総面積)
  85. 10270 VIL_W1=20                     '最大ウィンドウ番号
  86. 10280 GOSUB *VIL_WIN_INITM
  87. 10290 '
  88. 10300 VIL_W0=110                    '最大メニュー番号
  89. 10310 VIL_W1=256                     '最大ボックス数
  90. 10320 GOSUB *VIL_MSEL_INITM
  91. 10330 GOSUB *VIL_INP_INITM
  92. 10340 '
  93. 10350 VIL_W0= 99                    '最大ウィンドウ通し番号
  94. 10360 VIL_W1=128                    'ウィンドウ枠色初期設定  (G)
  95. 10370 VIL_W2=128                    '                        (R)
  96. 10380 VIL_W3=128                    '                        (B)
  97. 10390 VIL_W4=  8                    'ウィンドウ背景色用パレット番号
  98. 10400 VIL_W5=  0                    'ウィンドウ背景色初期設定(G)
  99. 10410 VIL_W6=  0                    '                        (R)
  100. 10420 VIL_W7=  0                    '                        (B)
  101. 10430 GOSUB *VIL_VWM_INITM
  102. 10440 GOSUB *VIL_SEL_INITM
  103. 10450 '
  104. 10460 VIL_W0=160:VIL_W1=80
  105. 10470 GOSUB *VIL_SYSCNF_INITM
  106. 10480 '
  107. 10490 VIL_W0=160+32:VIL_W1=80+32   '色設定ウィンドウ左上隅座標
  108. 10492 VIL_W2=160+64:VIL_W3=80+64   'パレット設定ウィンドウ左上隅座標
  109. 10494 VIL_W4=-1                     '表示輝度(高輝度)
  110. 10496 VIL_W5=128                    'ウィンドウ枠色初期設定  (G)
  111. 10498 VIL_W6=128                    'ウィンドウ枠色初期設定  (R)
  112. 10500 VIL_W7=128                    'ウィンドウ枠色初期設定  (B)
  113. 10502 GOSUB *VIL_COLCNF_INITM
  114. 10504 '
  115. 10506 VIL_W0=160+32:VIL_W1=80+32   'BGM設定ウィンドウ左上隅座標
  116. 10508 GOSUB *VIL_BGM_INITM
  117. 10510 '
  118. 10512 VIL_W0=160+64:VIL_W1=80+64   'BGM-FMウィンドウ左上隅座標
  119. 10514 VIL_W2=160+96:VIL_W3=80+16   '曲選択ウィンドウ左上隅座標
  120. 10516 VIL_W4=63                    'MMLデータ数
  121. 10518 VIL_W5=16                    '曲データ数
  122. 10520 GOSUB *VIL_BGMFM_INITM
  123. 10522 '
  124. 10524 VIL_W0=160+64:VIL_W1=80+64   'BGM-CDウィンドウ左上隅座標
  125. 10526 GOSUB *VIL_BGMCD_INITM
  126. 10528 '
  127. 10530 '--------------------------------------------------------------------
  128. 10532 *VIL_MCEDIT
  129. 10534 ' マウスカーソル・エディタ
  130. 10540 '
  131. 10550 VIL_FNAM$=""
  132. 10551 VIL_WX=80:VIL_WY=80
  133. 10552 CLS
  134. 10553 '
  135. 10560 'FNAM$        :ファイル名
  136. 10570 '
  137. 10580 DIM VIL_PAT%(15,15)  '0:BLACK,1:WHITE,2:BACK
  138. 10590 PALETTE 7,[255,255,255]
  139. 10600 PALETTE 6,[160,160,160]
  140. 10610 VIL_MCAND$="":VIL_MCDOT$=""
  141. 10620 VIL_MCX=-1:VIL_MCY=-1
  142. 10630 'SETUP SCREEN
  143. 10640 VIL_WW=VIL_WX+343:VIL_WZ=VIL_WY+290
  144. 10650 VIL_VWT$="ALGERNON":VIL_VWAT=4:VIL_VWN=0
  145. 10660 GOSUB *VIL_VWOPEN
  146. 10670 SYMBOL(8,2),"MOUSE CURSOR EDITOR",1,1,4,,,3
  147. 10680 LINE(8,24)-(264,280),PSET,%6,B
  148. 10690 LINE(272,24)-(289,41),PSET,%6,B
  149. 10700 LINE(300,24)-(339,43),PSET,7,BF
  150. 10710 GOSUB 11480
  151. 10720 RESTORE 12870
  152. 10730 FOR VIL_I=1 TO 9
  153. 10740   READ VIL_W0$
  154. 10750   SYMBOL(276,VIL_I*22+32),FNVIL_P2S$(VIL_I)+" "+VIL_W0$,1,1,7
  155. 10760   LINE(274,VIL_I*22+30)-(333,VIL_I*22+47),PSET,%6,B
  156. 10770 NEXT
  157. 10780 GOSUB 12820
  158. 10790 VIL_BCE=0
  159. 10800 'MAIN MENU
  160. 10810 LINE(268,46)-(339,251),PSET,7,B
  161. 10820 VIL_X=272:VIL_Y=50:VIL_W=335:VIL_Z=71
  162. 10830 VIL_YL=22:VIL_XN=1:VIL_YN=9:VIL_C=15:VIL_MN=80
  163. 10840 GOSUB *VIL_MSEL
  164. 10850 LINE(268,46)-(339,251),PSET,%8,B
  165. 10860 GOSUB 12760
  166. 10870 IF VIL_KN>0 THEN
  167. 10880   ON VIL_KN GOSUB 10920,10920,10920,11130,11350,11640,11730,11730,*VIL_SYSCNF
  168. 10890 ENDIF
  169. 10900 GOTO 10810
  170. 10910 'EDIT
  171. 10920 VIL_W5=VIL_KN
  172. 10930 VIL_X=8:VIL_Y=24:VIL_W=24:VIL_Z=40
  173. 10940 VIL_XL=16:VIL_YL=16:VIL_XN=9:VIL_YN=1:VIL_BCE=0
  174. 10950 GOSUB *VIL_BCMAKE
  175. 10960 VIL_XN=16:VIL_YN=16:VIL_C=12:VIL_MN=81
  176. 10970 GOSUB *VIL_MSELIN
  177. 10980 IF VIL_KN>0 THEN
  178. 10990   VIL_X=(VIL_KN-1) MOD 16:VIL_Y=(VIL_KN-1)\16 
  179. 11000   VIL_C=-(VIL_W5=2)*15-(VIL_W5=3)*9
  180. 11010   LINE(VIL_X*16+ 9,VIL_Y*16+25)                                                   -(VIL_X*16+23,VIL_Y*16+39),PSET,%VIL_C,BF
  181. 11020   PSET(VIL_X+273,VIL_Y+25),%VIL_C
  182. 11030   PSET(VIL_X+302,VIL_Y+26),%(-(VIL_C<>0)*15)
  183. 11040   VIL_PAT%(VIL_X,VIL_Y)=VIL_W5-1
  184. 11050 ELSE IF VIL_KN=0 THEN
  185. 11060   VIL_C=12:GOSUB *VIL_BC
  186. 11070   RETURN
  187. 11080 ELSE
  188. 11090   GOSUB 12760
  189. 11100 ENDIF
  190. 11110 GOTO 10960
  191. 11120 'POINT
  192. 11130 VIL_X=8:VIL_Y=24:VIL_W=24:VIL_Z=40
  193. 11140 VIL_XL=16:VIL_YL=16:VIL_XN=9:VIL_YN=1:VIL_BCE=0
  194. 11150 GOSUB *VIL_BCMAKE
  195. 11160 VIL_XN=16:VIL_YN=16:VIL_C=12:VIL_MN=81
  196. 11170 GOSUB *VIL_MSELIN
  197. 11180 IF VIL_KN>0 THEN
  198. 11190   IF VIL_MCX>=0 THEN
  199. 11200     VIL_C=-(VIL_PAT%(VIL_MCX,VIL_MCY)=1)*15                                           -(VIL_PAT%(VIL_MCX,VIL_MCY)=2)*9
  200. 11210     LINE(VIL_MCX*16+ 9,VIL_MCY*16+25)                                              -(VIL_MCX*16+23,VIL_MCY*16+39),PSET,%VIL_C,BF
  201. 11220   ENDIF
  202. 11230   VIL_MCX=(VIL_KN-1) MOD 16:VIL_MCY=(VIL_KN-1)\16 
  203. 11240   LINE(VIL_MCX*16+12,VIL_MCY*16+28)                                              -(VIL_MCX*16+20,VIL_MCY*16+36),PSET,2,BF
  204. 11250   VIL_C=12:GOSUB *VIL_BC
  205. 11260   RETURN
  206. 11270 ELSE IF VIL_KN=0 THEN
  207. 11280   VIL_C=12:GOSUB *VIL_BC
  208. 11290   RETURN
  209. 11300 ELSE
  210. 11310   GOSUB 12760
  211. 11320 ENDIF
  212. 11330 GOTO 11130
  213. 11340 'CLEAR
  214. 11350 VIL_WX=VIL_WX+48:VIL_WY=VIL_WY+160:VIL_WW=VIL_WX+175:VIL_WZ=VIL_WY+55
  215. 11360 VIL_VWT$="CLEAR":VIL_VWAT=0
  216. 11370 GOSUB *VIL_VWOPEN
  217. 11380 SYMBOL(8,8),"データをクリアします",1,1,7
  218. 11390 VIL_X=44:VIL_Y=28
  219. 11400 GOSUB *VIL_SEL_DO
  220. 11410 IF VIL_KN<1 THEN
  221. 11420   GOSUB 12760
  222. 11430   GOTO 11390
  223. 11440 ENDIF
  224. 11450 GOSUB *VIL_VWCLOSE
  225. 11460 IF VIL_KN=2 THEN RETURN
  226. 11470 '
  227. 11480 FOR VIL_Y=0 TO 15
  228. 11490   FOR VIL_X=0 TO 15
  229. 11500     VIL_PAT%(VIL_X,VIL_Y)=2
  230. 11510   NEXT
  231. 11520 NEXT
  232. 11530 LINE(9,25)-(263,279),PSET,1,BF
  233. 11540 FOR VIL_X=24 TO 248 STEP 16
  234. 11550   LINE(VIL_X,24)-(VIL_X,280),PSET,%6
  235. 11560 NEXT
  236. 11570 FOR VIL_Y=40 TO 264 STEP 16
  237. 11580   LINE(8,VIL_Y)-(264,VIL_Y),PSET,%6
  238. 11590 NEXT
  239. 11600 LINE(273,25)-(288,40),PSET,1,BF
  240. 11610 LINE(300,24)-(339,43),PSET,7,BF
  241. 11620 RETURN
  242. 11630 'SET
  243. 11640 GOSUB 12610
  244. 11650 VIL_W0$="":VIL_W1$=""
  245. 11660 FOR VIL_I=1 TO 63 STEP 2
  246. 11670   VIL_W0$=VIL_W0$+CHR$(VAL("&H"+MID$(VIL_MCAND$,VIL_I,2)))
  247. 11680   VIL_W1$=VIL_W1$+CHR$(VAL("&H"+MID$(VIL_MCDOT$,VIL_I,2)))
  248. 11690 NEXT
  249. 11700 MOUSE 2,VIL_W0$,VIL_W1$,-VIL_MCX*(VIL_MCX>=0),-VIL_MCY*(VIL_MCX>=0)
  250. 11710 RETURN
  251. 11720 'LOAD & SAVE
  252. 11730 VIL_W5=(VIL_KN=8)    '0:LOAD  / -1:SAVE
  253. 11740 VIL_WX=VIL_WX+48:VIL_WY=VIL_WY+160:VIL_WW=VIL_WX+351:VIL_WZ=VIL_WY+31
  254. 11750 VIL_VWT$=MID$("LOADSAVE",1-VIL_W5*4,4)+" NAME":VIL_VWAT=0
  255. 11760 GOSUB *VIL_VWOPEN
  256. 11770 SYMBOL(8,8),KMID$("ロードセーブ",1-VIL_W5*3,3)+"名:",1,1,7
  257. 11780 VIL_A$=VIL_FNAM$
  258. 11790 VIL_X=80:VIL_Y=8:VIL_C=15:VIL_CB=8:VIL_L=32
  259. 11800 GOSUB *VIL_INPSTR
  260. 11810 IF VIL_KN=-2 OR (VIL_KN=-1 AND VIL_MW=-1) THEN 
  261. 11820   VIL_W0$=VIL_A$
  262. 11830   GOSUB 12760
  263. 11840   IF VIL_VWMR=8 THEN RETURN
  264. 11850   VIL_A$=VIL_W0$
  265. 11860   GOTO 11790
  266. 11870 ELSE IF VIL_KN=0 THEN
  267. 11880   GOSUB *VIL_VWCLOSE
  268. 11890 ELSE 
  269. 11900   VIL_FNAM$=VIL_A$
  270. 11910   VIL_WX=VIL_WX+48:VIL_WY=VIL_WY+48
  271. 11920   VIL_WW=VIL_WX+175:VIL_WZ=VIL_WY+55
  272. 11930   VIL_VWT$=MID$("LOADSAVE",1-VIL_W5*4,4)+" SURE":VIL_VWAT=0
  273. 11940   GOSUB *VIL_VWOPEN
  274. 11950   SYMBOL(8,8),"データを"+KMID$("ロードセーブ",1-VIL_W5*3,3)+"します",                     1,1,7
  275. 11960   VIL_X=44:VIL_Y=28
  276. 11970   GOSUB *VIL_SEL_DO
  277. 11980   IF VIL_KN<1 THEN
  278. 11990     GOSUB 12760
  279. 12000     GOTO 11960
  280. 12010   ENDIF
  281. 12020   GOSUB *VIL_VWCLOSE:GOSUB *VIL_VWCLOSE
  282. 12030   IF VIL_KN=2 THEN RETURN
  283. 12040   IF VIL_W5=0 THEN    'LOAD
  284. 12050     VIL_E=0
  285. 12060     OPEN "I",#1,VIL_FNAM$
  286. 12070     IF VIL_E=63 THEN
  287. 12080       STOP
  288. 12090     ENDIF
  289. 12100     LINE INPUT #1,VIL_W0$:VIL_MCX=VAL(MID$(VIL_W0$,15))
  290. 12110     LINE INPUT #1,VIL_W0$:VIL_MCY=VAL(MID$(VIL_W0$,15))
  291. 12120     LINE INPUT #1,VIL_W0$':VIL_MCAND$=MID$(VIL_W0$,19,64)
  292. 12121     VIL_W0=0:VIL_MCAND$=""
  293. 12122     FOR VIL_I=0 TO 31
  294. 12123       VIL_W0=INSTR(VIL_W0+1,VIL_W0$,"&H")+2
  295. 12124       VIL_MCAND$=VIL_MCAND$+MID$(VIL_W0$,VIL_W0,2)
  296. 12125     NEXT
  297. 12128 '
  298. 12130     LINE INPUT #1,VIL_W0$':VIL_MCDOT$=MID$(VIL_W0$,19,64)
  299. 12131     VIL_W0=0:VIL_MCDOT$=""
  300. 12132     FOR VIL_I=0 TO 31
  301. 12133       VIL_W0=INSTR(VIL_W0+1,VIL_W0$,"&H")+2
  302. 12134       VIL_MCDOT$=VIL_MCDOT$+MID$(VIL_W0$,VIL_W0,2)
  303. 12135     NEXT
  304. 12138 '
  305. 12140     FOR VIL_Y=0 TO 15
  306. 12150       VIL_W0=32768
  307. 12160         VIL_W1=VAL("&H"+MID$(VIL_MCAND$,VIL_Y*4+1,4))
  308. 12170         VIL_W2=VAL("&H"+MID$(VIL_MCDOT$,VIL_Y*4+1,4))
  309. 12180       FOR VIL_X=0 TO 15
  310. 12190         VIL_PAT%(VIL_X,VIL_Y)=-((VIL_W1 AND VIL_W0)>0)*2                                                  -((VIL_W2 AND VIL_W0)>0)
  311. 12200         VIL_C=-(VIL_PAT%(VIL_X,VIL_Y)=1)*15                                               -(VIL_PAT%(VIL_X,VIL_Y)=2)*9
  312. 12210         LINE(VIL_X*16+ 9,VIL_Y*16+25)                                                  -(VIL_X*16+23,VIL_Y*16+39),PSET,%VIL_C,BF
  313. 12220         PSET(VIL_X+273,VIL_Y+25),%VIL_C
  314. 12230         PSET(VIL_X+302,VIL_Y+26),%(-(VIL_C<>0)*15)
  315. 12240         VIL_W0=VIL_W0\2
  316. 12250       NEXT
  317. 12260     NEXT
  318. 12270     IF VIL_MCX>=0 THEN 
  319. 12280       LINE(VIL_MCX*16+12,VIL_MCY*16+28)                                              -(VIL_MCX*16+20,VIL_MCY*16+36),PSET,2,BF
  320. 12290     ENDIF
  321. 12300     CLOSE #1
  322. 12310   ELSE                'SAVE
  323. 12320     GOSUB 12610
  324. 12330     VIL_E=0
  325. 12340     OPEN "O",#1,VIL_FNAM$
  326. 12350     IF VIL_E=64 THEN
  327. 12360       VIL_WX=VIL_WX+48:VIL_WY=VIL_WY+160
  328. 12370       VIL_WW=VIL_WX+287:VIL_WZ=VIL_WY+55
  329. 12380       VIL_VWT$="SURE":VIL_VWAT=0
  330. 12390       GOSUB *VIL_VWOPEN
  331. 12400       SYMBOL(8,8),"指定のファイルは既に存在しています",1,1,7
  332. 12410       VIL_X=100:VIL_Y=28
  333. 12420       GOSUB *VIL_SEL_DO
  334. 12430       IF VIL_KN<1 THEN
  335. 12440         GOSUB 12760
  336. 12450         GOTO 12410
  337. 12460       ENDIF
  338. 12470       GOSUB *VIL_VWCLOSE
  339. 12480       IF VIL_KN=2 THEN GOSUB *VIL_VWCLOSE:RETURN
  340. 12490       KILL VIL_FNAM$:GOTO 12330
  341. 12500     ENDIF
  342. 12510     PRINT #1,"60000 VIL_MCX="+FNVIL_P2S$(VIL_MCX)
  343. 12520     PRINT #1,"60010 VIL_MCY="+FNVIL_P2S$(VIL_MCY)
  344. 12521 '
  345. 12522     VIL_W0$="60020 VIL_MCA$=CHR$(&H"+MID$(VIL_MCAND$,1,2)
  346. 12523     FOR VIL_I=0 TO 30
  347. 12524       VIL_W0$=VIL_W0$+",&H"+MID$(VIL_MCAND$,VIL_I*2+3,2)
  348. 12525     NEXT
  349. 12530     PRINT #1,VIL_W0$+")"
  350. 12541 '
  351. 12542     VIL_W0$="60030 VIL_MCD$=CHR$(&H"+MID$(VIL_MCDOT$,1,2)
  352. 12543     FOR VIL_I=0 TO 30
  353. 12544       VIL_W0$=VIL_W0$+",&H"+MID$(VIL_MCDOT$,VIL_I*2+3,2)
  354. 12545     NEXT
  355. 12546     PRINT #1,VIL_W0$+")"
  356. 12550     CLOSE #1
  357. 12560   ENDIF
  358. 12570 ENDIF
  359. 12580 RETURN
  360. 12590 '
  361. 12600 'MAKE STRING
  362. 12610 VIL_MCAND$="":VIL_MCDOT$=""
  363. 12620 FOR VIL_Y=0 TO 15
  364. 12631   FOR VIL_I=0 TO 1
  365. 12635   VIL_W0=0:VIL_W1=0
  366. 12640     FOR VIL_X=0 TO 7
  367. 12650      VIL_W0=(VIL_W0-(VIL_PAT%(VIL_I*8+VIL_X,VIL_Y)=2))*2
  368. 12660      VIL_W1=(VIL_W1-(VIL_PAT%(VIL_I*8+VIL_X,VIL_Y)=1))*2
  369. 12670 'PRINT -(VIL_PAT%(VIL_I*8+VIL_X,VIL_Y)=2);'    PRINT VIL_W0;VIL_W1
  370. 12680     NEXT
  371. 12682 'PRINT HEX$(VIL_W0\2)'PRINT HEX$(VIL_W0);
  372. 12690     VIL_MCAND$=VIL_MCAND$+RIGHT$("00"+HEX$(VIL_W0\2),2)
  373. 12700     VIL_MCDOT$=VIL_MCDOT$+RIGHT$("00"+HEX$(VIL_W1\2),2)
  374. 12710 '    PRINT VIL_MCAND$;"|";VIL_MCDOT$:A$=INPUT$(1)
  375. 12715   NEXT
  376. 12720 NEXT
  377. 12730 RETURN
  378. 12740 '
  379. 12750 'CHECK VWM AND VST
  380. 12760 GOSUB *VIL_VWMCHECK
  381. 12770 IF VIL_VWMR=4 AND VIL_WT$="ALGERNON" THEN GOSUB 12820
  382. 12780 'GOSUB *VIL_STCHECK
  383. 12790 RETURN
  384. 12800 '
  385. 12810 'MAKE BOX FOR PATTERN EDIT
  386. 12820 VIL_X=8:VIL_Y=24:VIL_W=24:VIL_Z=40
  387. 12830 VIL_XL=16:VIL_YL=16:VIL_XN=16:VIL_YN=16
  388. 12840 GOSUB *VIL_BCMAKE
  389. 12850 RETURN
  390. 12860 '
  391. 12870 DATA "BLACK","WHITE","BACK","POINT","CLEAR","SET","LOAD","SAVE","SYS"
  392. 12880 'SCALE--------2---------3---------4---------5---------6---------7-----*--*8
  393. 40030 *VIL_BAS_VER
  394. 40035 VIL_VER=100
  395. 40040 RETURN
  396. 40070 *VIL_BEEP_INITM
  397. 40120 RETURN
  398. 40130 *VIL_GBEEP
  399. 40170 FOR VIL_K=1 TO 4:BEEP 363523,5,400:WAIT 5:NEXT
  400. 40175 RETURN
  401. 40185 *VIL_BBEEP
  402. 40225 BEEP 363523,40,80:WAIT 40
  403. 40230 RETURN
  404. 40270 *VIL_WIN_INITM
  405. 40320 VIL_WX=0:VIL_WY=0
  406. 40325 VIL_WW=0:VIL_WZ=0
  407. 40330 VIL_WUB=0:VIL_WDB=0
  408. 40335 VIL_WLB=0:VIL_WRB=0
  409. 40340 VIL_WAN=0
  410. 40345 VIL_WPM=0
  411. 40350 VIL_WBUFMAX=VIL_W0
  412. 40355 VIL_WANMAX=VIL_W1
  413. 40360 DIM VIL_WBUF%(VIL_W0)
  414. 40365 DIM VIL_WBUFO(VIL_W1)
  415. 40370 DIM VIL_WX(VIL_W1),VIL_WY(VIL_W1)
  416. 40375 DIM VIL_WW(VIL_W1),VIL_WZ(VIL_W1)
  417. 40385 VIL_WX(0)=  0:VIL_WY(0)=  0
  418. 40390 VIL_WW(0)=639:VIL_WZ(0)=479
  419. 40400 RETURN
  420. 40410 *VIL_WOP
  421. 40480 GOSUB *VIL_WPMA
  422. 40485 VIL_WAN=VIL_WAN+1
  423. 40490 VIL_WX(VIL_WAN)=VIL_WX:VIL_WY(VIL_WAN)=VIL_WY
  424. 40495 VIL_WW(VIL_WAN)=VIL_WW:VIL_WZ(VIL_WAN)=VIL_WZ
  425. 40500 VIL_WBUFO(VIL_WAN)=VIL_WBUFO(VIL_WAN-1)                                                        +INT((INT((VIL_WW-VIL_WX+VIL_WLB+VIL_WRB+8)/8)                                        *(VIL_WZ-VIL_WY+VIL_WUB+VIL_WDB+1)*4+1)/2)
  426. 40505 VIL_E=0
  427. 40510 GET@A(VIL_WX-VIL_WLB,VIL_WY-VIL_WUB)-(VIL_WW+VIL_WRB,VIL_WZ+VIL_WDB),              VIL_WBUF%,VIL_WBUFO(VIL_WAN-1)
  428. 40515 IF VIL_E THEN
  429. 40520   VIL_WAN=VIL_WAN-1
  430. 40525   VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  431. 40530   VIL_WW=VIL_WW(VIL_WAN):VIL_WZ=VIL_WZ(VIL_WAN)
  432. 40535 ENDIF
  433. 40540 RETURN
  434. 40550 *VIL_WCL
  435. 40600 GOSUB *VIL_WPMA
  436. 40605 PUT@A(VIL_WX(VIL_WAN)-VIL_WLB,VIL_WY(VIL_WAN)-VIL_WUB)                           -(VIL_WW(VIL_WAN)+VIL_WRB,VIL_WZ(VIL_WAN)+VIL_WDB),                            VIL_WBUF%,,,,,VIL_WBUFO(VIL_WAN-1)
  437. 40610 VIL_WAN=VIL_WAN-1
  438. 40615 VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  439. 40620 VIL_WW=VIL_WW(VIL_WAN):VIL_WZ=VIL_WZ(VIL_WAN)
  440. 40625 RETURN
  441. 40635 *VIL_WCLDMY
  442. 40685 GOSUB *VIL_WPMA
  443. 40690 VIL_WAN=VIL_WAN-1
  444. 40695 VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  445. 40700 VIL_WW=VIL_WW(VIL_WAN):VIL_WZ=VIL_WZ(VIL_WAN)
  446. 40705 RETURN
  447. 40715 *VIL_WCLALL
  448. 40765 WHILE VIL_WAN
  449. 40770   GOSUB *VIL_WCL
  450. 40775 WEND
  451. 40780 RETURN
  452. 40790 *VIL_WPMR
  453. 40830 VIL_WPM=-1
  454. 40835 VIEW(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ)
  455. 40840 WINDOW(0,0)-(VIL_WW-VIL_WX,VIL_WZ-VIL_WY)
  456. 40845 RETURN
  457. 40855 *VIL_WPMA
  458. 40895 VIL_WPM=0
  459. 40900 VIEW(0,0)-(639,479)
  460. 40905 WINDOW(0,0)-(639,479)
  461. 40910 RETURN
  462. 40940 *VIL_MSEL_INITM
  463. 40990 VIL_MN=0
  464. 40995 VIL_BN=0
  465. 41000 VIL_BCE=0
  466. 41005 VIL_BXDIR=0
  467. 41025 DIM VIL_BXX(VIL_W1),VIL_BXY(VIL_W1)
  468. 41030 DIM VIL_BXW(VIL_W1),VIL_BXZ(VIL_W1)
  469. 41035 DIM VIL_BN(VIL_W0)
  470. 41045 FOR VIL_I=1 TO VIL_W0
  471. 41050   VIL_BN(VIL_I)=1
  472. 41055 NEXT
  473. 41065 MOUSE 0:MOUSE 1,320,240,0
  474. 41070 RETURN
  475. 41080 *VIL_MSEL
  476. 41260 GOSUB *VIL_BCMAKE
  477. 41265 GOSUB *VIL_MSELIN
  478. 41270 RETURN
  479. 41280 *VIL_BCMAKE
  480. 41370 IF VIL_BXDIR AND 2 THEN VIL_W1=-1 ELSE VIL_W1=1
  481. 41375 IF VIL_BXDIR AND 4 THEN VIL_W2=-1 ELSE VIL_W2=1
  482. 41380 FOR VIL_I=1 TO VIL_YN
  483. 41385   FOR VIL_J=1 TO VIL_XN
  484. 41390     IF VIL_BXDIR AND 1 THEN
  485. 41395       VIL_W0=(VIL_J-1)*VIL_YN+VIL_I
  486. 41400     ELSE
  487. 41405       VIL_W0=(VIL_I-1)*VIL_XN+VIL_J
  488. 41410     ENDIF
  489. 41415     VIL_BXX(VIL_W0)=VIL_X+(VIL_J-1)*VIL_XL*VIL_W1
  490. 41420     VIL_BXY(VIL_W0)=VIL_Y+(VIL_I-1)*VIL_YL*VIL_W2
  491. 41425     VIL_BXW(VIL_W0)=VIL_W+(VIL_J-1)*VIL_XL*VIL_W1
  492. 41430     VIL_BXZ(VIL_W0)=VIL_Z+(VIL_I-1)*VIL_YL*VIL_W2
  493. 41435   NEXT
  494. 41440 NEXT
  495. 41445 RETURN
  496. 41455 *VIL_MSELIN
  497. 41630 VIL_W0=MOUSE(3,0)+MOUSE(3,1)
  498. 41635 VIL_W0=VIL_XN*VIL_YN
  499. 41640 VIL_W1=28:VIL_W2=29:VIL_W3=30:VIL_W4=31
  500. 41645 IF VIL_BXDIR AND 2 THEN SWAP VIL_W1,VIL_W2
  501. 41650 IF VIL_BXDIR AND 4 THEN SWAP VIL_W3,VIL_W4
  502. 41655 IF VIL_BXDIR AND 1 THEN SWAP VIL_W1,VIL_W4:SWAP VIL_W2,VIL_W3
  503. 41675 MOUSE 1,,,1
  504. 41680 IF VIL_MN THEN VIL_BN=VIL_BN(VIL_MN)
  505. 41685 IF VIL_BN<1 OR VIL_W0<VIL_BN THEN VIL_BN=1
  506. 41690 IF VIL_BCE=0 THEN GOSUB *VIL_BC
  507. 41700 VIL_K$=INKEY$
  508. 41705 IF VIL_K$<>"" THEN VIL_KY=ASC(VIL_K$) ELSE VIL_KY=0
  509. 41715 IF MOUSE(3,1) OR VIL_KY=48 OR VIL_KY=24 THEN
  510. 41720   VIL_W0=MOUSE(3,0)
  511. 41725   VIL_KN=0
  512. 41730 ELSE IF MOUSE(3,0) OR MOUSE(2,0) THEN
  513. 41735   VIL_KN=-1
  514. 41740   VIL_MX=MOUSE(0):VIL_MY=MOUSE(1)
  515. 41745   IF VIL_WPM THEN
  516. 41750     IF VIL_WPM AND VIL_WX<=VIL_MX AND VIL_MX<=VIL_WW                                        AND VIL_WY<=VIL_MY AND VIL_MY<=VIL_WZ THEN
  517. 41755       VIL_MW=VIL_MX-VIL_WX:VIL_MZ=VIL_MY-VIL_WY
  518. 41760       FOR VIL_I=1 TO VIL_XN
  519. 41765         IF  VIL_BXX(VIL_I)=<VIL_MW AND VIL_MW=<VIL_BXW(VIL_I) THEN
  520. 41770           FOR VIL_J=VIL_I TO VIL_W0 STEP VIL_XN
  521. 41775             IF VIL_BXY(VIL_J)=<VIL_MZ AND VIL_MZ=<VIL_BXZ(VIL_J) THEN
  522. 41780               VIL_KN=VIL_J
  523. 41785               GOSUB *VIL_BC
  524. 41790               VIL_BN=VIL_KN
  525. 41795               GOSUB *VIL_BC
  526. 41800               VIL_I=VIL_W0:VIL_J=VIL_W0
  527. 41805             ENDIF
  528. 41810           NEXT
  529. 41815         ENDIF
  530. 41820       NEXT
  531. 41825     ENDIF
  532. 41830   ELSE
  533. 41835     VIL_MW=-1
  534. 41840     FOR VIL_I=1 TO VIL_XN
  535. 41845       IF  VIL_BXX(VIL_I)=<VIL_MX AND VIL_MX=<VIL_BXW(VIL_I) THEN
  536. 41850         FOR VIL_J=VIL_I TO VIL_W0 STEP VIL_XN
  537. 41855           IF VIL_BXY(VIL_J)=<VIL_MY AND VIL_MY=<VIL_BXZ(VIL_J) THEN
  538. 41860             VIL_KN=VIL_J
  539. 41865             GOSUB *VIL_BC
  540. 41870             VIL_BN=VIL_KN
  541. 41875             GOSUB *VIL_BC
  542. 41880             VIL_I=VIL_W0:VIL_J=VIL_W0
  543. 41885           ENDIF
  544. 41890         NEXT
  545. 41895       ENDIF
  546. 41900     NEXT
  547. 41905   ENDIF
  548. 41910 ELSE
  549. 41915   IF VIL_KY=0 THEN
  550. 41920     GOTO 41700
  551. 41925   ELSE IF 48<VIL_KY AND VIL_KY<58 THEN
  552. 41930     IF VIL_KY<VIL_W0+49 THEN
  553. 41935       VIL_KN=VIL_KY-48:GOSUB *VIL_BC
  554. 41940       VIL_BN=VIL_KN:GOSUB *VIL_BC
  555. 41945     ELSE
  556. 41950       VIL_KN=-2
  557. 41955     ENDIF
  558. 41960   ELSE IF VIL_KY=13 THEN
  559. 41965    VIL_KN=VIL_BN
  560. 41970   ELSE IF 27<VIL_KY AND VIL_KY<32 THEN
  561. 41975     GOSUB *VIL_BC
  562. 41980     VIL_BN=VIL_BN-(VIL_KY=VIL_W1)+(VIL_KY=VIL_W2)                                             +((VIL_KY=VIL_W3)-(VIL_KY=VIL_W4))*VIL_XN
  563. 41985     VIL_BN=VIL_BN+(VIL_KY=VIL_W1 AND (VIL_BN MOD VIL_XN)=1)*VIL_XN
  564. 41990     VIL_BN=VIL_BN-(VIL_KY=VIL_W2 AND ((VIL_BN+1) MOD VIL_XN)=1)*VIL_XN
  565. 41995     VIL_BN=VIL_BN-((VIL_BN<1)-(VIL_BN>VIL_W0))*VIL_W0
  566. 42000     GOSUB *VIL_BC
  567. 42005     GOTO 41700
  568. 42010   ELSE
  569. 42015     VIL_KN=-2
  570. 42020   ENDIF
  571. 42025 ENDIF
  572. 42035 VIL_BN(VIL_MN)=VIL_BN
  573. 42040 MOUSE 1,,,0
  574. 42045 VIL_BCE=-1
  575. 42050 RETURN
  576. 42060 *VIL_BC
  577. 42100 LINE(VIL_BXX(VIL_BN),VIL_BXY(VIL_BN))                                           -(VIL_BXW(VIL_BN),VIL_BXZ(VIL_BN)),XOR,%VIL_C,B
  578. 42105 RETURN
  579. 42135 *VIL_INP_INITM
  580. 42185 MOUSE 0:MOUSE 1,320,240,0
  581. 42190 RETURN
  582. 42200 *VIL_INPSTR
  583. 42325 VIL_W0=LEN(VIL_A$):VIL_W1=VIL_W0
  584. 42330 MOUSE 1,,,1
  585. 42340 GOSUB *VIL_GPRINT
  586. 42345 GOSUB 42560
  587. 42355 VIL_K$=INKEY$
  588. 42360 IF VIL_K$<>"" THEN VIL_KY=ASC(VIL_K$) ELSE VIL_KY=0
  589. 42370 IF MOUSE(3,1) OR VIL_KY=24 THEN
  590. 42375   VIL_KN=0
  591. 42380 ELSE IF MOUSE(3,0) OR MOUSE(2,0) THEN
  592. 42385   VIL_MX=MOUSE(0):VIL_MY=MOUSE(1)
  593. 42390   IF VIL_WPM THEN
  594. 42395     IF VIL_WPM AND VIL_WX<=VIL_MX AND VIL_MX<=VIL_WW                                        AND VIL_WY<=VIL_MY AND VIL_MY<=VIL_WZ THEN
  595. 42400       VIL_MW=VIL_MX-VIL_WX:VIL_MZ=VIL_MY-VIL_WY
  596. 42405     ELSE
  597. 42410       VIL_MW=-1
  598. 42415     ENDIF
  599. 42420   ENDIF
  600. 42425   VIL_KN=-1
  601. 42430 ELSE IF VIL_KY=13 THEN
  602. 42435   VIL_KN=1
  603. 42440 ELSE
  604. 42445   IF VIL_KY=0 THEN 42355
  605. 42450   GOSUB 42560
  606. 42455   IF VIL_KY=29 AND VIL_W1>0      THEN VIL_W1=VIL_W1-1:GOTO 42345
  607. 42460   IF VIL_KY=28 AND VIL_W1<VIL_W0 THEN VIL_W1=VIL_W1+1:GOTO 42345
  608. 42465   IF VIL_KY>=32 AND VIL_KY<>127 AND VIL_W0<VIL_L THEN
  609. 42470     VIL_A$=LEFT$(VIL_A$,VIL_W1)+VIL_K$+MID$(VIL_A$,VIL_W1+1)
  610. 42475     VIL_W0=VIL_W0+1:VIL_W1=VIL_W1+1
  611. 42480   ELSE IF VIL_KY=8 AND VIL_W1>0 THEN
  612. 42485     VIL_A$=LEFT$(VIL_A$,VIL_W1-1)+MID$(VIL_A$,VIL_W1+1)
  613. 42490     VIL_W0=VIL_W0-1:VIL_W1=VIL_W1-1
  614. 42495   ELSE IF VIL_KY=127 AND VIL_W1<VIL_W0 THEN
  615. 42500     VIL_A$=LEFT$(VIL_A$,VIL_W1)+MID$(VIL_A$,VIL_W1+2)
  616. 42505     VIL_W0=VIL_W0-1
  617. 42510   ELSE IF VIL_KY=11 THEN
  618. 42515     VIL_A$="":VIL_W0=0:VIL_W1=0
  619. 42520   ENDIF
  620. 42525   GOTO 42340
  621. 42530 ENDIF
  622. 42535 MOUSE 1,,,0
  623. 42540 GOSUB 42560
  624. 42545 RETURN
  625. 42560 LINE(VIL_X+VIL_W1*8,VIL_Y+17)-(VIL_X+VIL_W1*8+7,VIL_Y+17),XOR,%VIL_C
  626. 42565 RETURN
  627. 42575 *VIL_GPRINT
  628. 42635 LINE(VIL_X,VIL_Y)-(VIL_X+VIL_L*8-1,VIL_Y+15),PSET,%VIL_CB,BF
  629. 42640 SYMBOL(VIL_X,VIL_Y),VIL_A$,1,1,%VIL_C
  630. 42645 RETURN
  631. 42655 *VIL_MVWAIT
  632. 42695 VIL_W0=MOUSE(9)+MOUSE(10):VIL_W0$=INKEY$
  633. 42700 WHILE ABS(MOUSE(9))<10 AND ABS(MOUSE(10))<10                                   AND MOUSE(2,0)+MOUSE(2,1)=0 AND INKEY$="":WEND
  634. 42705 RETURN
  635. 45030 *VIL_VWM_VER
  636. 45035 VIL_VER=100
  637. 45040 RETURN
  638. 45080 *VIL_VWM_INITM
  639. 45155 VIL_VWAT=0:VIL_VWT$=""
  640. 45160 VIL_VWXM=  8:VIL_VWYM= 14
  641. 45165 VIL_VWWM=631:VIL_VWZM=471
  642. 45170 VIL_VWXL= 32:VIL_VWYL=  8
  643. 45175 VIL_VWWL=624:VIL_VWZL=458
  644. 45180 VIL_VWXD=  1:VIL_VWYD=  1
  645. 45185 VIL_VWWD=  1:VIL_VWZD=  1
  646. 45190 VIL_VWN=0
  647. 45195 VIL_VWMR=0
  648. 45200 DIM VIL_VWX(VIL_W0),VIL_VWY(VIL_W0)
  649. 45205 DIM VIL_VWW(VIL_W0),VIL_VWZ(VIL_W0)
  650. 45210 DIM VIL_VWAT(VIL_WANMAX)
  651. 45215 DIM VIL_VWT$(VIL_WANMAX)
  652. 45220 DIM VIL_VWN(VIL_WANMAX)
  653. 45225 VIL_VWCB=VIL_W4
  654. 45230 VIL_MCX0=1:VIL_MCY0=2
  655. 45235 VIL_MCA0$=CHR$(&H7F,&HFF,&H3F,&HFF,&H1F,&HFF,&H0F,&HFF,&H07,&HFF,&H03,&HFF,&H01,&HFF,&H00,&HFF,&H00,&H7F,&H00,&H3F,&H00,&H1F,&H00,&HFF,&H00,&HFF,&H18,&H7F,&H38,&H7F,&HFC,&H7F)
  656. 45240 VIL_MCD0$=CHR$(&H00,&H00,&H00,&H00,&H40,&H00,&H20,&H00,&H50,&H00,&H38,&H00,&H5C,&H00,&H2E,&H00,&H5F,&H00,&H2F,&H80,&H5E,&H00,&H26,&H00,&H42,&H00,&H03,&H00,&H01,&H00,&H00,&H00)
  657. 45245 VIL_MCX1=7: VIL_MCY1=9
  658. 45250 VIL_MCA1$=CHR$(&HFE,&H7F,&HF0,&H0F,&HE0,&H07,&HE0,&H01,&H80,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H80,&H00,&H80,&H00,&HC0,&H01,&HC0,&H01,&HE0,&H03,&HF0,&H07,&HFC,&H1F)
  659. 45255 VIL_MCD1$=CHR$(&H00,&H00,&H01,&H80,&H0D,&HB0,&H0D,&HB0,&H0D,&HB6,&H6D,&HB6,&H6F,&HF6,&H7F,&HFE,&H7F,&HFE,&H3F,&HFE,&H3F,&HFE,&H1F,&HFC,&H1F,&HFC,&H0F,&HF8,&H03,&HE0,&H00,&H00)
  660. 45260 VIL_MCX2=2:VIL_MCY2=12
  661. 45265 VIL_MCA2$=CHR$(&HFF,&HE7,&HFF,&H83,&HFE,&H01,&HF8,&H01,&HE0,&H21,&HC0,&H63,&H81,&HC3,&H07,&HC7,&H0F,&H87,&H0F,&H8F,&H0F,&H0F,&H9F,&H1F,&HF0,&H1F,&HE0,&H3F,&HF0,&H7F,&HF0,&HFF)
  662. 45270 VIL_MCD2$=CHR$(&H00,&H00,&H00,&H18,&H00,&H7C,&H01,&H8C,&H06,&H08,&H18,&H08,&H20,&H10,&H40,&H10,&H40,&H20,&H40,&H20,&H40,&H40,&H00,&H40,&H00,&H80,&H0F,&H00,&H00,&H00,&H00,&H00)
  663. 45280 VIL_WUB=14:VIL_WDB=8:VIL_WRB=8:VIL_WLB=8
  664. 45290 PALETTE 1,[VIL_W1-80+(VIL_W1<80)*(VIL_W1-80)                                           ,VIL_W2-80+(VIL_W2<80)*(VIL_W2-80)                                           ,VIL_W3-80+(VIL_W3<80)*(VIL_W3-80)],1
  665. 45295 PALETTE 2,[VIL_W1   ,VIL_W2   ,VIL_W3   ]
  666. 45300 PALETTE 3,[VIL_W1+80+(255<VIL_W1)*(VIL_W1-255)                                         ,VIL_W2+80+(255<VIL_W2)*(VIL_W2-255)                                         ,VIL_W3+80+(255<VIL_W3)*(VIL_W3-255)],1
  667. 45305 PALETTE VIL_VWCB,[VIL_W5,VIL_W6,VIL_W7]
  668. 45310 MOUSE 2,VIL_MCA0$,VIL_MCD0$,VIL_MCX0,VIL_MCY0
  669. 45320 RETURN
  670. 45330 *VIL_VWOPEN
  671. 45480 GOSUB *VIL_WPMA
  672. 45485 IF VIL_WAN THEN
  673. 45490   LINE(VIL_WX(VIL_WAN)+16,VIL_WY(VIL_WAN)-11)                                     -(VIL_WW(VIL_WAN)-16,VIL_WY(VIL_WAN)- 4),XOR,%3,BF
  674. 45495 ENDIF
  675. 45500 IF VIL_VWN THEN
  676. 45505   VIL_WX=VIL_VWX(VIL_VWN):VIL_WY=VIL_VWY(VIL_VWN)
  677. 45510   VIL_WW=VIL_VWW(VIL_VWN):VIL_WZ=VIL_VWZ(VIL_VWN)
  678. 45515 ENDIF
  679. 45520 GOSUB *VIL_WOP
  680. 45525 IF VIL_E THEN
  681. 45530   LINE(VIL_WX(VIL_WAN)+16,VIL_WY(VIL_WAN)-11)                                     -(VIL_WW(VIL_WAN)-16,VIL_WY(VIL_WAN)- 4),XOR,%3,BF
  682. 45535 ENDIF
  683. 45545 VIL_VWAT(VIL_WAN)=VIL_VWAT
  684. 45550 VIL_VWT$(VIL_WAN)=VIL_VWT$
  685. 45555 VIL_VWN (VIL_WAN)=VIL_VWN
  686. 45565 LINE(VIL_WX-8,VIL_WY-14)-(VIL_WW+8,VIL_WZ+8),PSET,%VIL_VWCB,BF
  687. 45575 LINE(VIL_WX-5,VIL_WY-11)-(VIL_WW+5,VIL_WY-3),PSET,%2,BF
  688. 45580 LINE(VIL_WX-5,VIL_WZ+ 3)-(VIL_WW+5,VIL_WZ+5),PSET,%2,BF
  689. 45585 LINE(VIL_WX-5,VIL_WY- 2)-(VIL_WX-1,VIL_WZ+2),PSET,%2,BF
  690. 45590 LINE(VIL_WW+1,VIL_WY- 2)-(VIL_WW+5,VIL_WZ+2),PSET,%2,BF
  691. 45600 CONNECT(VIL_WW+7,VIL_WY-13)-(VIL_WX-7,VIL_WY-13)                                                        -(VIL_WX-7,VIL_WZ+ 7),%3
  692. 45605 CONNECT(VIL_WW+6,VIL_WY-12)-(VIL_WX-6,VIL_WY-12)                                                        -(VIL_WX-6,VIL_WZ+ 6),%3
  693. 45610 CONNECT(VIL_WX-6,VIL_WZ+ 7)-(VIL_WW+7,VIL_WZ+ 7)                                                        -(VIL_WW+7,VIL_WY-12),%1
  694. 45615 CONNECT(VIL_WX-5,VIL_WZ+ 6)-(VIL_WW+6,VIL_WZ+ 6)                                                        -(VIL_WW+6,VIL_WY-11),%1
  695. 45625 CONNECT(VIL_WW+1,VIL_WY-2)-(VIL_WX-2,VIL_WY-2)                                                         -(VIL_WX-2,VIL_WZ+1),%1
  696. 45630 CONNECT(VIL_WW  ,VIL_WY-1)-(VIL_WX-1,VIL_WY-1)                                                         -(VIL_WX-1,VIL_WZ  ),%1
  697. 45635 CONNECT(VIL_WX-2,VIL_WZ+2)-(VIL_WW+2,VIL_WZ+2)                                                         -(VIL_WW+2,VIL_WY-2),%3
  698. 45640 CONNECT(VIL_WX-1,VIL_WZ+1)-(VIL_WW+1,VIL_WZ+1)                                                         -(VIL_WW+1,VIL_WY-1),%3
  699. 45650 IF (VIL_VWAT AND 2)=2 THEN
  700. 45655   LINE(VIL_WX-5,VIL_WY-11)-(VIL_WX+3,VIL_WY-3),PSET,%1,B
  701. 45660   LINE(VIL_WX-5,VIL_WY-11)-(VIL_WX+3,VIL_WY-3),PSET,%1
  702. 45665   LINE(VIL_WX+3,VIL_WY-11)-(VIL_WX-5,VIL_WY-3),PSET,%1
  703. 45670 ENDIF
  704. 45680 IF (VIL_VWAT AND 4)=4 THEN
  705. 45685   LINE(VIL_WX+ 5,VIL_WY-11)-(VIL_WX+13,VIL_WY-3),PSET,%1,B
  706. 45690   LINE(VIL_WX+13,VIL_WY-11)-(VIL_WX+ 5,VIL_WY-3),PSET,%1
  707. 45695 ENDIF
  708. 45705 IF (VIL_VWAT AND 1)=1 THEN
  709. 45710   LINE(VIL_WW-13,VIL_WY-11)-(VIL_WW-5,VIL_WY- 3),PSET,%1,B
  710. 45715   LINE(VIL_WW-13,VIL_WY- 8)-(VIL_WW-5,VIL_WY- 8),PSET,%1
  711. 45720   LINE(VIL_WW-13,VIL_WY- 6)-(VIL_WW-5,VIL_WY- 6),PSET,%1
  712. 45725 ENDIF
  713. 45735 IF (VIL_VWAT AND 16)=16 THEN
  714. 45740   LINE(VIL_WW-3,VIL_WY-11)-(VIL_WW+5,VIL_WY-3),PSET,%1,B
  715. 45745   LINE(VIL_WW-3,VIL_WY- 8)-(VIL_WW+2,VIL_WY-3),PSET,%1,B
  716. 45750 ENDIF
  717. 45760 VIL_W0=INT(VIL_WW-VIL_WX-36)/5
  718. 45765 IF VIL_W0>0 THEN
  719. 45770   SYMBOL(VIL_WX+18,VIL_WY-10),LEFT$(VIL_VWT$,VIL_W0),.5!,.5!,%1,,,,1
  720. 45775 ENDIF
  721. 45785 LINE(VIL_WX+16,VIL_WY-11)-(VIL_WW-16,VIL_WY-4),XOR,%3,BF
  722. 45790 GOSUB *VIL_WPMR
  723. 45795 RETURN
  724. 45805 *VIL_VWCLOSE
  725. 45890 IF VIL_VWN THEN
  726. 45895   VIL_VWX(VIL_VWN)=VIL_WX:VIL_VWY(VIL_VWN)=VIL_WY
  727. 45900   VIL_VWW(VIL_VWN)=VIL_WW:VIL_VWZ(VIL_VWN)=VIL_WZ
  728. 45905 ENDIF
  729. 45910 GOSUB *VIL_WCL
  730. 45915 VIL_VWAT=VIL_VWAT(VIL_WAN)
  731. 45920 VIL_VWT$=VIL_VWT$(VIL_WAN)
  732. 45925 VIL_VWN =VIL_VWN (VIL_WAN)
  733. 45930 IF VIL_WAN THEN
  734. 45935   LINE(VIL_WX+16,VIL_WY-11)-(VIL_WW-16,VIL_WY-4),XOR,%3,BF
  735. 45940 ENDIF
  736. 45945 GOSUB *VIL_WPMR
  737. 45950 RETURN
  738. 45960 *VIL_VWCLOSEDMY
  739. 46045 IF VIL_VWN THEN
  740. 46050   VIL_VWX(VIL_VWN)=VIL_WX:VIL_VWY(VIL_VWN)=VIL_WY
  741. 46055   VIL_VWW(VIL_VWN)=VIL_WW:VIL_VWZ(VIL_VWN)=VIL_WZ
  742. 46060 ENDIF
  743. 46065 GOSUB *VIL_WCLDMY
  744. 46070 LINE(VIL_WX(VIL_WAN+1)+16,VIL_WY(VIL_WAN+1)-11)                                 -(VIL_WW(VIL_WAN+1)-16,VIL_WY(VIL_WAN+1)- 4),XOR,%3,BF
  745. 46075 VIL_VWAT=VIL_VWAT(VIL_WAN)
  746. 46080 VIL_VWT$=VIL_VWT$(VIL_WAN)
  747. 46085 VIL_VWN =VIL_VWN (VIL_WAN)
  748. 46090 IF VIL_WAN THEN
  749. 46095   LINE(VIL_WX+16,VIL_WY-11)-(VIL_WW-16,VIL_WY-4),XOR,%3,BF
  750. 46100 ENDIF
  751. 46105 GOSUB *VIL_WPMR
  752. 46110 RETURN
  753. 46120 *VIL_VWCLOSEALL
  754. 46160 GOSUB *VIL_WCLALL
  755. 46165 RETURN
  756. 46175 *VIL_VWCLS
  757. 46210 LINE(0,0)-(VIL_WW-VIL_WX,VIL_WZ-VIL_WY),PSET,%VIL_VWCB,BF
  758. 46215 RETURN
  759. 46225 *VIL_VWMCHECK
  760. 46315 VIL_VWMR=0
  761. 46320 IF VIL_KN=-1 THEN
  762. 46325   GOSUB *VIL_VWMWIN
  763. 46330 ELSE IF VIL_KN=-2 AND VIL_KY=27 THEN
  764. 46335   VIL_WX=VIL_WW+(VIL_WW-582)*(VIL_WW>582)
  765. 46340   VIL_WY=VIL_WY-32+(VIL_WY- 46)*(VIL_WY< 46)                                                   +(VIL_WY-406)*(VIL_WY>406)
  766. 46350   GOSUB *VIL_VWMMENU
  767. 46355 ENDIF
  768. 46360 RETURN
  769. 46370 *VIL_VWMWIN
  770. 46430 VIL_VWMR=0
  771. 46435 IF (VIL_VWAT AND 2)=2 AND VIL_WX- 6<VIL_MX AND VIL_MX<VIL_WX+4                                     AND VIL_WY-12<VIL_MY AND VIL_MY<VIL_WY-2 THEN
  772. 46440   GOSUB *VIL_VWMCLOSE
  773. 46445 ELSE IF (VIL_VWAT AND  4)= 4 AND VIL_WX+4<VIL_MX AND VIL_MX<VIL_WX+14                AND VIL_WY-12<VIL_MY AND VIL_MY<VIL_WY-2 THEN
  774. 46450   GOSUB *VIL_VWMHIDE
  775. 46455 ELSE IF (VIL_VWAT AND  1)= 1 AND VIL_WW-14<VIL_MX AND VIL_MX<VIL_WW-4                AND VIL_WY-12<VIL_MY AND VIL_MY<VIL_WY-2 THEN
  776. 46460   VIL_WX=VIL_WW+(VIL_WW-582)*(VIL_WW>582)
  777. 46465   VIL_WY=VIL_WY-32+(VIL_WY- 46)*(VIL_WY< 46)                                                   +(VIL_WY-406)*(VIL_WY>406)
  778. 46475   GOSUB *VIL_VWMMENU
  779. 46480 ELSE IF (VIL_VWAT AND 16)=16 AND VIL_WW-4<VIL_MX AND VIL_MX<VIL_WW+6                 AND VIL_WY-12<VIL_MY AND VIL_MY<VIL_WY-2 THEN
  780. 46485   GOSUB *VIL_VWMRESIZE
  781. 46490 ELSE IF (VIL_VWAT AND  8)= 8 AND VIL_WX- 6<VIL_MX AND VIL_MX<VIL_WW+6                AND VIL_WY-12<VIL_MY AND VIL_MY<VIL_WY-2 THEN
  782. 46495   GOSUB *VIL_VWMMOVE
  783. 46500 ENDIF
  784. 46505 RETURN
  785. 46515 *VIL_VWMMENU
  786. 46585 GOSUB *VIL_WPMA
  787. 46590 LINE(VIL_WX(VIL_WAN)+16,VIL_WY(VIL_WAN)-11)                                     -(VIL_WW(VIL_WAN)-16,VIL_WY(VIL_WAN)- 4),XOR,%3,BF
  788. 46595 VIL_W1=VIL_VWAT
  789. 46600 VIL_WW=VIL_WX+49:VIL_WZ=VIL_WY+98
  790. 46605 VIL_VWT$="VWM":VIL_VWAT=0:VIL_VWN=0
  791. 46610 GOSUB *VIL_VWOPEN
  792. 46615 SYMBOL(5,  0),"<VWM>", 1,1,6
  793. 46620 SYMBOL(1, 20),"CLOSE", 1,1,%1-((VIL_W1 AND  2)= 2)*2
  794. 46625 SYMBOL(1, 36),"HIDE",  1,1,%1-((VIL_W1 AND  4)= 4)*2
  795. 46630 SYMBOL(1, 52),"MOVE",  1,1,%1-((VIL_W1 AND  8)= 8)*2
  796. 46635 SYMBOL(1, 68),"RESIZE",1,1,%1-((VIL_W1 AND 16)=16)*2
  797. 46640 SYMBOL(1, 84),"<INFO>",1,1,%3
  798. 46650 VIL_X=1:VIL_Y=20:VIL_W=VIL_X+47:VIL_Z=VIL_Y+14
  799. 46655 VIL_YL=16:VIL_XN=1:VIL_YN=5:VIL_BXDIR=0:VIL_BCE=0:VIL_C=15:VIL_MN=1
  800. 46660 GOSUB *VIL_MSEL
  801. 46665 IF VIL_KN=-1 OR (0<VIL_KN AND VIL_KN<5 AND (VIL_VWAT(VIL_WAN-1)                                       AND 2^VIL_KN)=0) THEN 46660
  802. 46670 GOSUB *VIL_VWCLOSE
  803. 46675 GOSUB *VIL_WPMA
  804. 46680 LINE(VIL_WX(VIL_WAN)+16,VIL_WY(VIL_WAN)-11)                                     -(VIL_WW(VIL_WAN)-16,VIL_WY(VIL_WAN)- 4),XOR,%3,BF
  805. 46685 GOSUB *VIL_WPMR
  806. 46690 IF VIL_KN<1 THEN RETURN
  807. 46700 ON VIL_KN GOTO 46710,46725,46740,46780,46820
  808. 46710 GOSUB *VIL_VWMCLOSE
  809. 46715 RETURN
  810. 46725 IF VIL_KY THEN GOSUB *VIL_VWMKHIDE ELSE GOSUB *VIL_VWMHIDE
  811. 46730 RETURN
  812. 46740 IF VIL_KY THEN
  813. 46745   GOSUB *VIL_VWMKMOVE
  814. 46750 ELSE
  815. 46755   VIL_MX=(VIL_WX+VIL_WW)\2:VIL_MY=VIL_WY-4:MOUSE 1,VIL_MX,VIL_MY
  816. 46760   GOSUB *VIL_VWMMOVE
  817. 46765 ENDIF
  818. 46770 RETURN
  819. 46780 IF VIL_KY THEN
  820. 46785   GOSUB *VIL_VWMKRESIZE
  821. 46790 ELSE
  822. 46795   VIL_MX=VIL_WW:VIL_MY=VIL_WY-6:MOUSE 1,VIL_MX,VIL_MY
  823. 46800   GOSUB *VIL_VWMRESIZE
  824. 46805 ENDIF
  825. 46810 RETURN
  826. 46820 VIL_WX=VIL_WX+(VIL_WX-448)*(VIL_WX>448)
  827. 46825 VIL_WY=VIL_WY+(VIL_WY-380)*(VIL_WY>380)
  828. 46830 GOSUB *VIL_VWMINF
  829. 46835 RETURN
  830. 46845 *VIL_VWMINF
  831. 46885 VIL_WW=VIL_WX+183:VIL_WZ=VIL_WY+91
  832. 46890 VIL_VWT$="VWM INFORMATION":VIL_VWAT=0:VIL_VWN=0
  833. 46895 VIL_E=0
  834. 46900 GOSUB *VIL_VWOPEN
  835. 46905 IF VIL_E=0 THEN
  836. 46910   VIL_W0$=FNVIL_P2S0$(VIL_WX(VIL_WAN-1),3)+","                                       +FNVIL_P2S0$(VIL_WY(VIL_WAN-1),3)+")"
  837. 46915   SYMBOL(8, 8),"POSITION:("+VIL_W0$,1,1,4
  838. 46920   VIL_W0$=FNVIL_P2S0$(VIL_WW(VIL_WAN-1)-VIL_WX(VIL_WAN-1)+1,3)+"×"                  +FNVIL_P2S0$(VIL_WZ(VIL_WAN-1)-VIL_WY(VIL_WAN-1)+1,3)
  839. 46925   SYMBOL(8,28),"SIZE    : "+VIL_W0$,1,1,4
  840. 46930   VIL_W0$=FNVIL_P2S0$(VIL_WAN-1,3)+"/"+FNVIL_P2S0$(VIL_WANMAX,3)
  841. 46935   SYMBOL(8,48),"WINDOW  : "+VIL_W0$,1,1,4
  842. 46940   VIL_W0$=FNVIL_P2S0$((VIL_WBUFMAX-VIL_WBUFO(VIL_WAN-1))\512,4)+"K/"                  +FNVIL_P2S0$(VIL_WBUFMAX\512,4)+"K"
  843. 46945   SYMBOL(8,68),"FREE    : "+VIL_W0$,1,1,4
  844. 46950   GOSUB *VIL_MVWAIT
  845. 46955   GOSUB *VIL_VWCLOSE
  846. 46960 ENDIF
  847. 46965 RETURN
  848. 46975 *VIL_VWMMOVE
  849. 47045 MOUSE 2,VIL_MCA1$,VIL_MCD1$,VIL_MCX1,VIL_MCY1
  850. 47050 MOUSE 1,VIL_MX,VIL_MY,1
  851. 47055 VIL_W0=VIL_WPM:GOSUB *VIL_WPMA
  852. 47060 VIL_WX=VIL_WX-8:VIL_WY=VIL_WY-14:VIL_WW=VIL_WW+8:VIL_WZ=VIL_WZ+8
  853. 47065 MOUSE 4,VIL_VWXM+VIL_MX-VIL_WX-8,VIL_VWYM+VIL_MY-VIL_WY-14,                          VIL_VWWM+VIL_MX-VIL_WW+8,VIL_VWZM+VIL_MY-VIL_WZ+8
  854. 47070 VIL_W1=0:VIL_W2=0:VIL_W3=0:VIL_W4=0
  855. 47075 VIL_WW=VIL_WW-VIL_WX:VIL_WZ=VIL_WZ-VIL_WY
  856. 47080 LINE(VIL_WX,VIL_WY)-STEP(VIL_WW,VIL_WZ),XOR,7,B
  857. 47085 WHILE MOUSE(2,0)
  858. 47090   VIL_MX=MOUSE(9):VIL_MY=MOUSE(10)
  859. 47095   IF VIL_MX OR VIL_MY THEN
  860. 47100     LINE(VIL_WX+VIL_W3,VIL_WY+VIL_W4)-STEP(VIL_WW,VIL_WZ),XOR,7,B
  861. 47105     VIL_W1=VIL_W1+VIL_MX:VIL_W2=VIL_W2+VIL_MY
  862. 47110     VIL_W3=VIL_W1-VIL_W1 MOD VIL_VWXD
  863. 47115     VIL_W4=VIL_W2-VIL_W2 MOD VIL_VWYD
  864. 47120     LINE(VIL_WX+VIL_W3,VIL_WY+VIL_W4)-STEP(VIL_WW,VIL_WZ),XOR,7,B
  865. 47125   ENDIF
  866. 47130 WEND
  867. 47135 VIL_WX=VIL_WX+VIL_W3:VIL_WY=VIL_WY+VIL_W4
  868. 47140 LINE(VIL_WX,VIL_WY)-STEP(VIL_WW,VIL_WZ),XOR,7,B
  869. 47150 IF MOUSE(2,1) THEN
  870. 47155   VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  871. 47160   VIL_WW=VIL_WW(VIL_WAN):VIL_WZ=VIL_WZ(VIL_WAN)
  872. 47165 ELSE
  873. 47170   VIL_WX=VIL_WX+8:VIL_WY=VIL_WY+14
  874. 47180   GOSUB *VIL_VWMMV
  875. 47185 ENDIF
  876. 47190 MOUSE 2,VIL_MCA0$,VIL_MCD0$,VIL_MCX0,VIL_MCY0
  877. 47195 MOUSE 4,0,0,639,479
  878. 47200 IF VIL_W0 THEN GOSUB *VIL_WPMR
  879. 47205 RETURN
  880. 47215 *VIL_VWMKMOVE
  881. 47275 WHILE INKEY$<>"":WEND
  882. 47280 VIL_W0=VIL_WPM:GOSUB *VIL_WPMA
  883. 47285 VIL_WX=VIL_WX-8:VIL_WY=VIL_WY-14
  884. 47290 VIL_WW=VIL_WW-VIL_WX+8:VIL_WZ=VIL_WZ-VIL_WY+8
  885. 47295 LINE(VIL_WX,VIL_WY)-STEP(VIL_WW,VIL_WZ),XOR,7,B
  886. 47300 VIL_KY=0
  887. 47305 WHILE VIL_KY<>13 AND VIL_KY<>24 AND VIL_KY<>48
  888. 47310   VIL_K$=INKEY$:IF VIL_K$="" THEN 47310
  889. 47315   LINE(VIL_WX,VIL_WY)-STEP(VIL_WW,VIL_WZ),XOR,7,B
  890. 47320   VIL_KY=ASC(VIL_K$)
  891. 47325   VIL_WX=VIL_WX+((VIL_KY=29)-(VIL_KY=28))*VIL_VWXD
  892. 47330   VIL_WX=VIL_WX-((VIL_WX+8<VIL_VWXM)-(VIL_VWWM<VIL_WX+VIL_WW-8))                            *VIL_VWXD
  893. 47335   VIL_WX=VIL_WX+((VIL_KY=52 OR VIL_KY=22)-(VIL_KY=54 OR VIL_KY=23))                         *VIL_VWXD*8
  894. 47340   VIL_WX=VIL_WX-((VIL_WX+8<VIL_VWXM)-(VIL_VWWM<VIL_WX+VIL_WW-8))                            *VIL_VWXD*8
  895. 47350   VIL_WY=VIL_WY+((VIL_KY=30)-(VIL_KY=31))*VIL_VWYD
  896. 47355   VIL_WY=VIL_WY-((VIL_WY+14<VIL_VWYM)-(VIL_VWZM<VIL_WY+VIL_WZ-8))                           *VIL_VWYD
  897. 47360   VIL_WY=VIL_WY+((VIL_KY=56 OR VIL_KY=11)-(VIL_KY=50 OR VIL_KY=127))                        *VIL_VWYD*8
  898. 47365   VIL_WY=VIL_WY-((VIL_WY+14<VIL_VWYM)-(VIL_VWZM<VIL_WY+VIL_WZ-8))                             *VIL_VWYD*8
  899. 47370   LINE(VIL_WX,VIL_WY)-STEP(VIL_WW,VIL_WZ),XOR,7,B
  900. 47375 WEND
  901. 47380 LINE(VIL_WX,VIL_WY)-STEP(VIL_WW,VIL_WZ),XOR,7,B
  902. 47390 IF VIL_KY=13 THEN
  903. 47395   VIL_WX=VIL_WX+8:VIL_WY=VIL_WY+14
  904. 47400   GOSUB *VIL_VWMMV
  905. 47405 ELSE
  906. 47410   VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  907. 47415   VIL_WW=VIL_WW(VIL_WAN):VIL_WZ=VIL_WZ(VIL_WAN)
  908. 47420 ENDIF
  909. 47425 IF VIL_W0 THEN GOSUB *VIL_WPMR
  910. 47430 RETURN
  911. 47440 *VIL_VWMMV
  912. 47515 VIL_E=0
  913. 47520 GET@A(VIL_WX(VIL_WAN)-8,VIL_WY(VIL_WAN)-14)                                      -(VIL_WW(VIL_WAN)+8,VIL_WZ(VIL_WAN)+ 8)                                       ,VIL_WBUF%,VIL_WBUFO(VIL_WAN)
  914. 47525 IF VIL_E=0 THEN
  915. 47530   VIL_WW=VIL_WX+VIL_WW(VIL_WAN)-VIL_WX(VIL_WAN)
  916. 47535   VIL_WZ=VIL_WY+VIL_WZ(VIL_WAN)-VIL_WY(VIL_WAN)
  917. 47540   PUT@A(VIL_WX(VIL_WAN)-8,VIL_WY(VIL_WAN)-14)                                      -(VIL_WW(VIL_WAN)+8,VIL_WZ(VIL_WAN)+ 8)                                       ,VIL_WBUF%,,,,,VIL_WBUFO(VIL_WAN-1)
  918. 47545   GET@A(VIL_WX-8,VIL_WY-14)-(VIL_WW+8,VIL_WZ+8)                                     ,VIL_WBUF%,VIL_WBUFO(VIL_WAN-1)
  919. 47550   PUT@A(VIL_WX-8,VIL_WY-14)-(VIL_WW+8,VIL_WZ+8)                                     ,VIL_WBUF%,,,,,VIL_WBUFO(VIL_WAN)
  920. 47555   VIL_WX(VIL_WAN)=VIL_WX:VIL_WY(VIL_WAN)=VIL_WY
  921. 47560   VIL_WW(VIL_WAN)=VIL_WW:VIL_WZ(VIL_WAN)=VIL_WZ
  922. 47565   VIL_VWMR=8
  923. 47570 ELSE
  924. 47575   VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  925. 47580   VIL_VWMR=0
  926. 47585 ENDIF
  927. 47590 RETURN
  928. 47600 *VIL_VWMCLOSE
  929. 47640 GOSUB *VIL_VWCLOSE
  930. 47645 VIL_VWMR=2
  931. 47650 RETURN
  932. 47660 *VIL_VWMHIDE
  933. 47715 VIL_W0=VIL_WPM:GOSUB *VIL_WPMA
  934. 47720 GOSUB *VIL_VWMHD0
  935. 47725 IF VIL_E=0 THEN
  936. 47730   WHILE MOUSE(2,0):WEND
  937. 47735   GOSUB *VIL_VWMHD1
  938. 47740   VIL_VWMR=4
  939. 47745 ELSE
  940. 47750   VIL_VWMR=0
  941. 47755 ENDIF
  942. 47760 IF VIL_W0 THEN GOSUB *VIL_WPMR
  943. 47765 RETURN
  944. 47775 *VIL_VWMKHIDE
  945. 47830 WHILE INKEY$<>"":WEND
  946. 47835 VIL_W0=VIL_WPM:GOSUB *VIL_WPMA
  947. 47840 GOSUB *VIL_VWMHD0
  948. 47845 IF VIL_E=0 THEN
  949. 47850   WHILE INKEY$="":WEND
  950. 47855   GOSUB *VIL_VWMHD1
  951. 47860   VIL_VWMR=4
  952. 47865 ENDIF
  953. 47870 IF VIL_W0 THEN GOSUB *VIL_WPMR
  954. 47875 RETURN
  955. 47885 *VIL_VWMHD0
  956. 47930 VIL_E=0
  957. 47935 GET@A(VIL_WX(VIL_WAN)-8,VIL_WY(VIL_WAN)-14)                                      -(VIL_WW(VIL_WAN)+8,VIL_WZ(VIL_WAN)+ 8)                                       ,VIL_WBUF%,VIL_WBUFO(VIL_WAN)
  958. 47940 IF VIL_E=0 THEN
  959. 47945   PUT@A(VIL_WX(VIL_WAN)-8,VIL_WY(VIL_WAN)-14)                                      -(VIL_WW(VIL_WAN)+8,VIL_WZ(VIL_WAN)+ 8)                                       ,VIL_WBUF%,,,,,VIL_WBUFO(VIL_WAN-1)
  960. 47950 ENDIF
  961. 47955 RETURN
  962. 47965 *VIL_VWMHD1
  963. 48005 PUT@A(VIL_WX(VIL_WAN)-8,VIL_WY(VIL_WAN)-14)                                      -(VIL_WW(VIL_WAN)+8,VIL_WZ(VIL_WAN)+ 8)                                       ,VIL_WBUF%,,,,,VIL_WBUFO(VIL_WAN)
  964. 48010 RETURN
  965. 48020 *VIL_VWMHD2
  966. 48060 GET@A(VIL_WX(VIL_WAN)-8,VIL_WY(VIL_WAN)-14)                                      -(VIL_WW(VIL_WAN)+8,VIL_WZ(VIL_WAN)+ 8)                                       ,VIL_WBUF%,VIL_WBUFO(VIL_WAN-1)
  967. 48065 PUT@A(VIL_WX(VIL_WAN)-8,VIL_WY(VIL_WAN)-14)                                      -(VIL_WW(VIL_WAN)+8,VIL_WZ(VIL_WAN)+ 8)                                       ,VIL_WBUF%,,,,,VIL_WBUFO(VIL_WAN)
  968. 48070 RETURN
  969. 48080 *VIL_VWMRESIZE
  970. 48160 MOUSE 2,VIL_MCA2$,VIL_MCD2$,VIL_MCX2,VIL_MCY2
  971. 48165 MOUSE 1,VIL_MX,VIL_MY,1
  972. 48170 VIL_W0=VIL_WPM:GOSUB *VIL_WPMA
  973. 48190 VIL_WX=VIL_WX-8:VIL_WY=VIL_WY-14:VIL_WW=VIL_WW+8:VIL_WZ=VIL_WZ+8
  974. 48195 VIL_W1=VIL_WW-VIL_VWWL-7-VIL_VWXM:VIL_W2=VIL_WZ-VIL_VWZL- 7-VIL_VWYM
  975. 48200 VIL_W3=VIL_WX+VIL_VWWL+7-VIL_VWWM:VIL_W4=VIL_WY+VIL_VWZL+13-VIL_VWZM
  976. 48220 MOUSE 4,VIL_VWXM-VIL_W1*(VIL_W1>0)-8,VIL_VWYM-VIL_W2*(VIL_W2>0)-14                  ,VIL_VWWM-VIL_W3*(VIL_W3<0)+8,VIL_VWZM-VIL_W4*(VIL_W4<0)+ 8
  977. 48230 VIL_W1=2:VIL_W2=1
  978. 48235 LINE(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ),XOR,7,B
  979. 48240 WHILE MOUSE(2,0)
  980. 48245   IF MOUSE(9) OR MOUSE(10) THEN
  981. 48250     VIL_MX=MOUSE(0):VIL_MY=MOUSE(1)
  982. 48255     LINE(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ),XOR,7,B
  983. 48260     IF VIL_MX<=VIL_WX(VIL_WAN)-8 THEN
  984. 48265       VIL_WX=VIL_MX+(VIL_WX-VIL_MX) MOD VIL_VWWD
  985. 48270       VIL_WW=VIL_WW(VIL_WAN)+8:VIL_W1=1
  986. 48275     ELSE IF VIL_MX>=VIL_WW(VIL_WAN)+8 THEN
  987. 48280       VIL_WW=VIL_MX-(VIL_MX-VIL_WW) MOD VIL_VWWD
  988. 48285       VIL_WX=VIL_WX(VIL_WAN)-8:VIL_W1=2
  989. 48290     ELSE
  990. 48295       IF VIL_W1=1 THEN
  991. 48300         VIL_W3=VIL_WW-VIL_VWXL-15-VIL_MX
  992. 48305         VIL_W3=VIL_MX-VIL_W3*(VIL_W3<0)
  993. 48310         VIL_WX=VIL_W3+(VIL_WX-VIL_W3) MOD VIL_VWWD
  994. 48315       ELSE
  995. 48320         VIL_W3=VIL_WX+VIL_VWXL+15-VIL_MX
  996. 48325         VIL_W3=VIL_MX-VIL_W3*(VIL_W3>0)
  997. 48330         VIL_WW=VIL_W3-(VIL_W3-VIL_WW) MOD VIL_VWWD
  998. 48335       ENDIF
  999. 48340     ENDIF
  1000. 48350     IF VIL_MY<=VIL_WY(VIL_WAN)-14 THEN
  1001. 48355       VIL_WY=VIL_MY+(VIL_WY-VIL_MY) MOD VIL_VWZD
  1002. 48360       VIL_WZ=VIL_WZ(VIL_WAN)+8:VIL_W2=1
  1003. 48365     ELSE IF VIL_MY>=VIL_WZ(VIL_WAN)+8 THEN
  1004. 48370       VIL_WZ=VIL_MY-(VIL_MY-VIL_WZ) MOD VIL_VWZD
  1005. 48375       VIL_WY=VIL_WY(VIL_WAN)-14:VIL_W2=2
  1006. 48380     ELSE
  1007. 48385       IF VIL_W2=1 THEN
  1008. 48390         VIL_W3=VIL_WZ-VIL_VWYL-21-VIL_MY
  1009. 48395         VIL_W3=VIL_MY-VIL_W3*(VIL_W3<0)
  1010. 48400         VIL_WY=VIL_W3+(VIL_WY-VIL_W3) MOD VIL_VWZD
  1011. 48405       ELSE
  1012. 48410         VIL_W3=VIL_WY+VIL_VWYL+21-VIL_MY
  1013. 48415         VIL_W3=VIL_MY-VIL_W3*(VIL_W3>0)
  1014. 48420         VIL_WZ=VIL_W3-(VIL_W3-VIL_WZ) MOD VIL_VWZD
  1015. 48425       ENDIF
  1016. 48430     ENDIF
  1017. 48435     LINE(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ),XOR,7,B
  1018. 48440   ENDIF
  1019. 48445 WEND
  1020. 48450 LINE(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ),XOR,7,B
  1021. 48455 IF MOUSE(2,1) THEN
  1022. 48460   VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  1023. 48465   VIL_WW=VIL_WW(VIL_WAN):VIL_WZ=VIL_WZ(VIL_WAN)
  1024. 48470 ELSE
  1025. 48475   VIL_WX=VIL_WX+8:VIL_WY=VIL_WY+14:VIL_WW=VIL_WW-8:VIL_WZ=VIL_WZ-8
  1026. 48480   GOSUB *VIL_VWMRS
  1027. 48485 ENDIF
  1028. 48490 MOUSE 2,VIL_MCA0$,VIL_MCD0$,VIL_MCX0,VIL_MCY0
  1029. 48495 MOUSE 4,0,0,639,479
  1030. 48500 IF VIL_W0 THEN GOSUB *VIL_WPMR
  1031. 48505 RETURN
  1032. 48515 *VIL_VWMKRESIZE
  1033. 48595 WHILE INKEY$<>"":WEND
  1034. 48600 VIL_W0=VIL_WPM:GOSUB *VIL_WPMA
  1035. 48620 VIL_WX=VIL_WX-8:VIL_WY=VIL_WY-14:VIL_WW=VIL_WW+8:VIL_WZ=VIL_WZ+8
  1036. 48625 VIL_W3=VIL_WW-VIL_VWWL-7-VIL_VWXM:VIL_W4=VIL_WZ-VIL_VWZL- 7-VIL_VWYM
  1037. 48630 VIL_W5=VIL_WX+VIL_VWWL+7-VIL_VWWM:VIL_W6=VIL_WY+VIL_VWZL+13-VIL_VWZM
  1038. 48635 VIL_W3=VIL_VWXM-VIL_W3*(VIL_W3>0)-8
  1039. 48640 VIL_W4=VIL_VWYM-VIL_W4*(VIL_W4>0)-14
  1040. 48645 VIL_W5=VIL_VWWM-VIL_W5*(VIL_W5<0)+8
  1041. 48650 VIL_W6=VIL_VWZM-VIL_W6*(VIL_W6<0)+8
  1042. 48670 VIL_W1=2:VIL_W2=1
  1043. 48675 LINE(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ),XOR,7,B
  1044. 48680 VIL_KY=0
  1045. 48685 WHILE VIL_KY<>13 AND VIL_KY<>24 AND VIL_KY<>48
  1046. 48690   VIL_K$=INKEY$:IF VIL_K$="" THEN 48690
  1047. 48695   LINE(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ),XOR,7,B
  1048. 48700   VIL_KY=ASC(VIL_K$)
  1049. 48705   VIL_W7=((VIL_KY=29)-(VIL_KY=28))*VIL_VWWD                                         +((VIL_KY=52 OR VIL_KY=22)-(VIL_KY=54 OR VIL_KY=23))*VIL_VWWD*8
  1050. 48715   IF VIL_W1=1 THEN
  1051. 48720     VIL_WX=VIL_WX+VIL_W7
  1052. 48725     IF VIL_WX<VIL_W3 THEN
  1053. 48730       VIL_WW=VIL_W5-(VIL_W5-VIL_WW) MOD VIL_VWWD
  1054. 48735       VIL_WX=VIL_WX(VIL_WAN)-8:VIL_W1=2
  1055. 48740     ELSE IF VIL_WW-VIL_VWXL-15<VIL_WX THEN
  1056. 48745       VIL_WX=VIL_WX(VIL_WAN)-8:VIL_W1=2
  1057. 48750       VIL_WW=VIL_WX+VIL_VWXL+15                                                         +(VIL_WW-VIL_WX-VIL_VWXL-15) MOD VIL_VWWD
  1058. 48755     ENDIF
  1059. 48760   ELSE
  1060. 48765     VIL_WW=VIL_WW+VIL_W7
  1061. 48770     IF VIL_WW<VIL_WX+VIL_VWXL+15 THEN
  1062. 48775       VIL_WW=VIL_WW(VIL_WAN)+8:VIL_W1=1
  1063. 48780       VIL_WX=VIL_WW-VIL_VWXL-15                                                         +(VIL_WX-VIL_WW+VIL_VWXL+15) MOD VIL_VWWD
  1064. 48785     ELSE IF VIL_W5<VIL_WW THEN
  1065. 48790       VIL_WX=VIL_W3-(VIL_W3-VIL_WX) MOD VIL_VWWD
  1066. 48795       VIL_WW=VIL_WW(VIL_WAN)+8:VIL_W1=1
  1067. 48800     ENDIF
  1068. 48805   ENDIF
  1069. 48815   VIL_W7=((VIL_KY=30)-(VIL_KY=31))*VIL_VWZD                                        +((VIL_KY=56 OR VIL_KY=11)-(VIL_KY=50 OR VIL_KY=127))*VIL_VWZD*8
  1070. 48825   IF VIL_W2=1 THEN
  1071. 48830     VIL_WY=VIL_WY+VIL_W7
  1072. 48835     IF VIL_WY<VIL_W4 THEN
  1073. 48840       VIL_WZ=VIL_W6-(VIL_W6-VIL_WZ) MOD VIL_VWZD
  1074. 48845       VIL_WY=VIL_WY(VIL_WAN)-14:VIL_W2=2
  1075. 48850     ELSE IF VIL_WZ-VIL_VWYL-21<VIL_WY THEN
  1076. 48855       VIL_WY=VIL_WY(VIL_WAN)-14:VIL_W2=2
  1077. 48860       VIL_WZ=VIL_WY+VIL_VWYL+21                                                         +(VIL_WZ-VIL_WY-VIL_VWYL-21) MOD VIL_VWZD
  1078. 48865     ENDIF
  1079. 48870   ELSE
  1080. 48875     VIL_WZ=VIL_WZ+VIL_W7
  1081. 48880     IF VIL_WZ<VIL_WY+VIL_VWYL+21 THEN
  1082. 48885       VIL_WZ=VIL_WZ(VIL_WAN)+8:VIL_W2=1
  1083. 48890       VIL_WY=VIL_WZ-VIL_VWYL-21                                                         +(VIL_WY-VIL_WZ+VIL_VWYL+21) MOD VIL_VWZD
  1084. 48895     ELSE IF VIL_W6<VIL_WZ THEN
  1085. 48900       VIL_WY=VIL_W4-(VIL_W4-VIL_WY) MOD VIL_VWZD
  1086. 48905       VIL_WZ=VIL_WZ(VIL_WAN)+8:VIL_W2=1
  1087. 48910     ENDIF
  1088. 48915   ENDIF
  1089. 48920   LINE(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ),XOR,7,B
  1090. 48925 WEND
  1091. 48935 LINE(VIL_WX,VIL_WY)-(VIL_WW,VIL_WZ),XOR,7,B
  1092. 48940 IF VIL_KY=13 THEN
  1093. 48945   VIL_WX=VIL_WX+8:VIL_WY=VIL_WY+14:VIL_WW=VIL_WW-8:VIL_WZ=VIL_WZ-8
  1094. 48950   GOSUB *VIL_VWMRS
  1095. 48955 ELSE
  1096. 48960   VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  1097. 48965   VIL_WW=VIL_WW(VIL_WAN):VIL_WZ=VIL_WZ(VIL_WAN)
  1098. 48970 ENDIF
  1099. 48975 IF VIL_W0 THEN GOSUB *VIL_WPMR
  1100. 48980 RETURN
  1101. 48990 *VIL_VWMRS
  1102. 49070 VIL_WBUFO(VIL_WAN+1)=VIL_WBUFO(VIL_WAN)                                                          +INT((INT((VIL_WW-VIL_WX+24)/8)                                                       *(VIL_WZ-VIL_WY+23)*4+1)/2)
  1103. 49075 IF VIL_WBUFO(VIL_WAN+1)<VIL_WBUFO(VIL_WAN) THEN
  1104. 49080   VIL_WBUFO(VIL_WAN+1)=VIL_WBUFO(VIL_WAN) 
  1105. 49085 ENDIF
  1106. 49090 VIL_E=0
  1107. 49095 GET@A(VIL_WX(VIL_WAN),VIL_WY(VIL_WAN))                                           -(VIL_WW(VIL_WAN),VIL_WZ(VIL_WAN))                                            ,VIL_WBUF%,VIL_WBUFO(VIL_WAN+1)
  1108. 49100 VIL_W1=VIL_WW(VIL_WAN)-VIL_WX(VIL_WAN)
  1109. 49105 VIL_W2=VIL_WZ(VIL_WAN)-VIL_WY(VIL_WAN)
  1110. 49110 IF VIL_E=0 THEN
  1111. 49115   VIL_WX(VIL_WAN+1)=VIL_WX:VIL_WY(VIL_WAN+1)=VIL_WY
  1112. 49120   VIL_WW(VIL_WAN+1)=VIL_WW:VIL_WZ(VIL_WAN+1)=VIL_WZ
  1113. 49125   GOSUB *VIL_VWCLOSE
  1114. 49135   VIL_WX=VIL_WX(VIL_WAN+2):VIL_WY=VIL_WY(VIL_WAN+2)
  1115. 49140   VIL_WW=VIL_WW(VIL_WAN+2):VIL_WZ=VIL_WZ(VIL_WAN+2)
  1116. 49145   VIL_VWAT=VIL_VWAT(VIL_WAN+1):VIL_VWT$=VIL_VWT$(VIL_WAN+1)
  1117. 49150   GOSUB *VIL_VWOPEN
  1118. 49155   GOSUB *VIL_WPMR
  1119. 49160   PUT@A(0,0)-(VIL_W1,VIL_W2),VIL_WBUF%,,,,,VIL_WBUFO(VIL_WAN+1)
  1120. 49170   GOSUB *VIL_WPMA
  1121. 49175   VIL_VWMR=16
  1122. 49180 ELSE
  1123. 49185   VIL_WX=VIL_WX(VIL_WAN):VIL_WY=VIL_WY(VIL_WAN)
  1124. 49190   VIL_WW=VIL_WW(VIL_WAN):VIL_WZ=VIL_WZ(VIL_WAN)
  1125. 49195   VIL_VWMR=0
  1126. 49200 ENDIF
  1127. 49205 RETURN
  1128. 49235 *VIL_SEL_INITM
  1129. 49285 RETURN
  1130. 49295 *VIL_SEL_OK
  1131. 49420 SYMBOL(VIL_X+4,VIL_Y+4),"確認",1,1,7
  1132. 49425 LINE(VIL_X+ 2,VIL_Y+2)-(VIL_X+ 37,VIL_Y+21),PSET,7,B
  1133. 49430 VIL_W=VIL_X+39:VIL_Z=VIL_Y+23
  1134. 49435 VIL_XN=1:VIL_YN=1:VIL_C=15:VIL_MN=0:VIL_BCE=0
  1135. 49440 GOSUB *VIL_MSEL
  1136. 49445 GOSUB *VIL_BC
  1137. 49450 RETURN
  1138. 49460 *VIL_SEL_YN
  1139. 49610 SYMBOL(VIL_X+4,VIL_Y+4),"はい    いいえ",1,1,7
  1140. 49615 LINE(VIL_X+ 2,VIL_Y+2)-(VIL_X+ 53,VIL_Y+21),PSET,7,B
  1141. 49620 LINE(VIL_X+66,VIL_Y+2)-(VIL_X+117,VIL_Y+21),PSET,7,B
  1142. 49625 VIL_W=VIL_X+55:VIL_Z=VIL_Y+23
  1143. 49630 VIL_XL=64:VIL_XN=2:VIL_YN=1:VIL_C=15:VIL_BXDIR=0:VIL_MN=0:VIL_BCE=0
  1144. 49635 GOSUB *VIL_MSEL
  1145. 49640 GOSUB *VIL_BC
  1146. 49645 IF VIL_KN=0 THEN VIL_KN=2
  1147. 49650 RETURN
  1148. 49660 *VIL_SEL_DO
  1149. 49810 SYMBOL(VIL_X+4,VIL_Y+4),"実行  取消",1,1,7
  1150. 49815 LINE(VIL_X+ 2,VIL_Y+2)-(VIL_X+37,VIL_Y+21),PSET,7,B
  1151. 49820 LINE(VIL_X+50,VIL_Y+2)-(VIL_X+85,VIL_Y+21),PSET,7,B
  1152. 49825 VIL_W=VIL_X+39:VIL_Z=VIL_Y+23
  1153. 49830 VIL_XL=48:VIL_XN=2:VIL_YN=1:VIL_C=15:VIL_BXDIR=0:VIL_MN=0:VIL_BCE=0
  1154. 49835 GOSUB *VIL_MSEL
  1155. 49840 GOSUB *VIL_BC
  1156. 49845 IF VIL_KN=0 THEN VIL_KN=2
  1157. 49850 RETURN
  1158. 50030 *VIL_UTY_VER
  1159. 50035 VIL_VER=100
  1160. 50040 RETURN
  1161. 50070 *VIL_SYSCNF_INITM
  1162. 50120 VIL_VWX(10)=VIL_W0    :VIL_VWY(10)=VIL_W1
  1163. 50125 VIL_VWW(10)=VIL_W0+111:VIL_VWZ(10)=VIL_W1+79
  1164. 50135 RETURN
  1165. 50145 *VIL_SYSCNF
  1166. 50185 VIL_VWN=10:VIL_VWAT=15:VIL_VWT$="SYSTEM"
  1167. 50190 GOSUB *VIL_VWOPEN
  1168. 50195 SYMBOL(8, 8),"システム設定",1,1,6
  1169. 50200 SYMBOL(8,36),"1 BGM設定",1,1,7
  1170. 50205 SYMBOL(8,56),"2 色設定    ",1,1,7
  1171. 50215 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  1172. 50220 WHILE VIL_VWMR<>2
  1173. 50225   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+103:VIL_Z=VIL_Y+19
  1174. 50230   VIL_YL=20:VIL_XN=1:VIL_YN=2:VIL_BXDIR=0:VIL_C=15:VIL_MN=10
  1175. 50235   GOSUB *VIL_MSEL
  1176. 50240   IF VIL_KN<0 THEN
  1177. 50245     GOSUB *VIL_VWMCHECK
  1178. 50250   ELSE IF VIL_KN=0 THEN
  1179. 50255     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  1180. 50260   ELSE
  1181. 50265     GOSUB *VIL_GBEEP
  1182. 50270     ON VIL_KN GOSUB *VIL_BGM,*VIL_COLCNF
  1183. 50275     VIL_VWMR=0
  1184. 50280   ENDIF
  1185. 50285 WEND
  1186. 50290 RETURN
  1187. 50320 *VIL_COLCNF_INITM
  1188. 50390 VIL_INT=VIL_W4
  1189. 50395 VIL_INTINIT=VIL_W4
  1190. 50400 DIM VIL_P(2)
  1191. 50405 DIM VIL_VWP(2)
  1192. 50410 DIM VIL_VWPINIT(2)
  1193. 50415 VIL_VWP(0)=VIL_W5:VIL_VWPINIT(0)=VIL_W5
  1194. 50420 VIL_VWP(1)=VIL_W6:VIL_VWPINIT(1)=VIL_W6
  1195. 50425 VIL_VWP(2)=VIL_W7:VIL_VWPINIT(2)=VIL_W7
  1196. 50435 GOSUB *VIL_COLCNF_INIT
  1197. 50445 VIL_VWX(20)=VIL_W0    :VIL_VWY(20)=VIL_W1
  1198. 50450 VIL_VWW(20)=VIL_W0+159:VIL_VWZ(20)=VIL_W1+99
  1199. 50455 VIL_VWX(21)=VIL_W2    :VIL_VWY(21)=VIL_W3
  1200. 50460 VIL_VWW(21)=VIL_W2+159:VIL_VWZ(21)=VIL_W3+99
  1201. 50465 RETURN
  1202. 50475 *VIL_COLCNF_INIT
  1203. 50515 VIL_INT=VIL_INTINIT
  1204. 50520 IF VIL_INT THEN VIL_K=255 ELSE VIL_K=192
  1205. 50525 GOSUB *VIL_INTSET
  1206. 50530 VIL_VWP(0)=VIL_VWPINIT(0)
  1207. 50535 VIL_VWP(1)=VIL_VWPINIT(1)
  1208. 50540 VIL_VWP(2)=VIL_VWPINIT(2)
  1209. 50545 GOSUB *VIL_WPALSET
  1210. 50550 RETURN
  1211. 50560 *VIL_WPALSET
  1212. 50600 PALETTE 1,[VIL_VWP(0)-80+(VIL_VWP(0)<80)*(VIL_VWP(0)-80)                             ,VIL_VWP(1)-80+(VIL_VWP(1)<80)*(VIL_VWP(1)-80)                              ,VIL_VWP(2)-80+(VIL_VWP(2)<80)*(VIL_VWP(2)-80)],1
  1213. 50605 PALETTE 2,[VIL_VWP(0),VIL_VWP(1),VIL_VWP(2)],1
  1214. 50610 PALETTE 3,[VIL_VWP(0)+80+(VIL_VWP(0)>175)*(VIL_VWP(0)-175)                            ,VIL_VWP(1)+80+(VIL_VWP(1)>175)*(VIL_VWP(1)-175)                            ,VIL_VWP(2)+80+(VIL_VWP(2)>175)*(VIL_VWP(2)-175)],1
  1215. 50615 RETURN 
  1216. 50625 *VIL_COLCNF
  1217. 50715 VIL_VWN=20:VIL_VWAT=15:VIL_VWT$="COLOR"
  1218. 50720 GOSUB *VIL_VWOPEN
  1219. 50725 SYMBOL(8, 8),"   色設定   ",1,1,6
  1220. 50730 SYMBOL(8,36),"1 表示 ["+KMID$("低高",1-VIL_INT,1)+"輝度]",1,1,7
  1221. 50735 SYMBOL(8,56),"2 パレット初期化",1,1,7
  1222. 50740 SYMBOL(8,76),"3 ウィンドウ色設定",1,1,7
  1223. 50750 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  1224. 50755 WHILE VIL_VWMR<>2
  1225. 50760   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+151:VIL_Z=VIL_Y+19
  1226. 50765   VIL_YL=20:VIL_XN=1:VIL_YN=3:VIL_BXDIR=0:VIL_C=15:VIL_MN=20
  1227. 50770   GOSUB *VIL_MSEL
  1228. 50775   IF VIL_KN<0 THEN
  1229. 50780     GOSUB *VIL_VWMCHECK
  1230. 50785   ELSE IF VIL_KN=0 THEN
  1231. 50790     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  1232. 50795   ELSE
  1233. 50800     GOSUB *VIL_GBEEP
  1234. 50805     ON VIL_KN GOSUB 50855,*VIL_COLCNF_INIT,50885
  1235. 50810     VIL_X=88:VIL_Y=36:VIL_L=2:VIL_C=15:VIL_CB=VIL_VWCB
  1236. 50815     VIL_A$=KMID$("低高",1-VIL_INT,1)
  1237. 50820     GOSUB *VIL_GPRINT
  1238. 50825     VIL_VWMR=0
  1239. 50830   ENDIF
  1240. 50835 WEND
  1241. 50840 RETURN
  1242. 50855 VIL_INT=NOT VIL_INT
  1243. 50860 IF VIL_INT THEN VIL_K=255 ELSE VIL_K=192
  1244. 50865 GOSUB *VIL_INTSET
  1245. 50870 RETURN
  1246. 50885 VIL_P(0)=VIL_VWP(0):VIL_P(1)=VIL_VWP(1):VIL_P(2)=VIL_VWP(2):VIL_P=2
  1247. 50890 GOSUB *VIL_PALCNF
  1248. 50895 VIL_VWP(0)=VIL_P(0):VIL_VWP(1)=VIL_P(1):VIL_VWP(2)=VIL_P(2)
  1249. 50900 GOSUB *VIL_WPALSET
  1250. 50905 RETURN
  1251. 50915 *VIL_INTSET
  1252. 50955 PALETTE  9,[    0,    0,VIL_K],1
  1253. 50960 PALETTE 10,[    0,VIL_K,    0],1
  1254. 50965 PALETTE 11,[    0,VIL_K,VIL_K],1
  1255. 50970 PALETTE 12,[VIL_K,    0,    0],1
  1256. 50975 PALETTE 13,[VIL_K,    0,VIL_K],1
  1257. 50980 PALETTE 14,[VIL_K,VIL_K,    0],1
  1258. 50985 PALETTE 15,[VIL_K,VIL_K,VIL_K],1
  1259. 50990 RETURN
  1260. 51000 *VIL_PALCNF
  1261. 51065 VIL_VWN=21:VIL_VWAT=15:VIL_VWT$="PALETTE"
  1262. 51070 GOSUB *VIL_VWOPEN
  1263. 51075 SYMBOL(32,8),"パレット設定",1,1,6
  1264. 51080 LINE(  8,8)-( 23,24),PSET,%VIL_P,BF
  1265. 51085 LINE(136,8)-(151,24),PSET,%VIL_P,BF
  1266. 51095 GOSUB 51330
  1267. 51100 FOR VIL_I=2 TO 0 STEP -1
  1268. 51105   SYMBOL( 8,VIL_I*20+36),MID$("GRB",3-VIL_I,1),1,1,4-VIL_I+(VIL_I>0)
  1269. 51110   SYMBOL(16,VIL_I*20+36),"(  )",1,1,7
  1270. 51115   FOR VIL_J=1 TO 3
  1271. 51120     LINE(VIL_BXX(VIL_I*3+VIL_J)+2,VIL_BXY(VIL_I*3+VIL_J)+2)                         -(VIL_BXW(VIL_I*3+VIL_J)-2,VIL_BXZ(VIL_I*3+VIL_J)-2),PSET,7,B
  1272. 51125   NEXT
  1273. 51130   SYMBOL( 48,VIL_I*20+36),"〈",1,1,7
  1274. 51135   SYMBOL(141,VIL_I*20+36),"〉",1,1,7
  1275. 51140   GOSUB 51280
  1276. 51145 NEXT
  1277. 51155 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  1278. 51160 WHILE VIL_VWMR<>2
  1279. 51165   VIL_XN=3:VIL_YN=3:VIL_BXDIR=4:VIL_C=15:VIL_MN=21
  1280. 51170   GOSUB *VIL_MSELIN
  1281. 51175   IF VIL_KN<0 THEN
  1282. 51180     GOSUB *VIL_VWMCHECK
  1283. 51185     GOSUB 51330
  1284. 51190   ELSE IF VIL_KN=0 THEN
  1285. 51195     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  1286. 51200   ELSE
  1287. 51205     VIL_I=2-(VIL_KN-1)\3
  1288. 51210     VIL_J=VIL_KN MOD 3
  1289. 51215     IF VIL_J=2 THEN
  1290. 51225     ELSE
  1291. 51230       VIL_P(VIL_I)=VIL_P(VIL_I)+((VIL_J=1)-(VIL_J=0))*16
  1292. 51235       VIL_P(VIL_I)=VIL_P(VIL_I)                                                                +((255<VIL_P(VIL_I))-(VIL_P(VIL_I)<0))*256
  1293. 51240     ENDIF
  1294. 51245     GOSUB 51280
  1295. 51250     PALETTE VIL_P,[VIL_P(0),VIL_P(1),VIL_P(2)],1
  1296. 51255   ENDIF
  1297. 51260 WEND
  1298. 51265 RETURN
  1299. 51280 VIL_X=24:VIL_Y=VIL_I*20+36
  1300. 51285 VIL_A$=FNVIL_P2SS$(VIL_P(VIL_I)\16,2):VIL_L=2:VIL_C=15:VIL_CB=VIL_VWCB
  1301. 51290 GOSUB *VIL_GPRINT
  1302. 51295 LINE(72,VIL_I*20+37)-(131,VIL_I*20+50),PSET,%VIL_VWCB,BF
  1303. 51300 IF VIL_P(VIL_I)\16 THEN
  1304. 51305   LINE(72,VIL_I*20+37)-(71+(VIL_P(VIL_I)\16)*4,VIL_I*20+50),PSET                   ,4-VIL_I+(VIL_I>0),BF
  1305. 51310 ENDIF
  1306. 51315 RETURN
  1307. 51330 FOR VIL_I=0 TO 2
  1308. 51335   VIL_BXX(VIL_I*3+1)= 50:VIL_BXY(VIL_I*3+1)=74-VIL_I*20
  1309. 51340   VIL_BXW(VIL_I*3+1)= 69:VIL_BXZ(VIL_I*3+1)=93-VIL_I*20
  1310. 51345   VIL_BXX(VIL_I*3+2)= 69:VIL_BXY(VIL_I*3+2)=74-VIL_I*20
  1311. 51350   VIL_BXW(VIL_I*3+2)=134:VIL_BXZ(VIL_I*3+2)=93-VIL_I*20
  1312. 51355   VIL_BXX(VIL_I*3+3)=134:VIL_BXY(VIL_I*3+3)=74-VIL_I*20
  1313. 51360   VIL_BXW(VIL_I*3+3)=153:VIL_BXZ(VIL_I*3+3)=93-VIL_I*20
  1314. 51365 NEXT
  1315. 51370 RETURN
  1316. 51405 *VIL_BGM_INITM
  1317. 51450 VIL_VWX(30)=VIL_W0   :VIL_VWY(30)=VIL_W1
  1318. 51455 VIL_VWW(30)=VIL_W0+96:VIL_VWZ(30)=VIL_W1+79
  1319. 51465 RETURN
  1320. 51475 *VIL_BGM
  1321. 51555 VIL_VWN=30:VIL_VWAT=15:VIL_VWT$="BGM"
  1322. 51560 GOSUB *VIL_VWOPEN
  1323. 51565 SYMBOL(8, 8),"BGM設定",1,1,6
  1324. 51570 SYMBOL(8,36),"1 FM音源",1,1,7
  1325. 51575 SYMBOL(8,56),"2 CDDA",1,1,7
  1326. 51585 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  1327. 51590 WHILE VIL_VWMR<>2
  1328. 51595   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+87:VIL_Z=VIL_Y+19
  1329. 51600   VIL_YL=20:VIL_XN=1:VIL_YN=2:VIL_BXDIR=0:VIL_C=15:VIL_MN=30
  1330. 51605   GOSUB *VIL_MSEL
  1331. 51610   IF VIL_KN<0 THEN
  1332. 51615     GOSUB *VIL_VWMCHECK
  1333. 51620   ELSE IF VIL_KN=0 THEN
  1334. 51625     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  1335. 51630   ELSE
  1336. 51635     GOSUB *VIL_GBEEP
  1337. 51640     ON VIL_KN GOSUB *VIL_BGMFM,*VIL_BGMCD
  1338. 51645     VIL_VWMR=0
  1339. 51650   ENDIF
  1340. 51655 WEND
  1341. 51660 RETURN
  1342. 51690 *VIL_BGMFM_INITM
  1343. 51750 DIM VIL_FM0$(VIL_W4),VIL_FM1$(VIL_W4)
  1344. 51755 DIM VIL_FM2$(VIL_W4),VIL_FM3$(VIL_W4)
  1345. 51760 DIM VIL_FM4$(VIL_W4),VIL_FM5$(VIL_W4)
  1346. 51765 DIM VIL_FMT$(VIL_W5)
  1347. 51770 DIM VIL_FMN$(VIL_W5)
  1348. 51780 VIL_FMF=0
  1349. 51785 VIL_FMSP=0
  1350. 51790 VIL_FMLS=-1
  1351. 51795 VIL_FMLB=0:VIL_FMLE=0:VIL_FMME=0
  1352. 51800 VIL_FMTMAX=0
  1353. 51805 VIL_VWX(31)=VIL_W0    :VIL_VWY(31)=VIL_W1
  1354. 51810 VIL_VWW(31)=VIL_W0+175:VIL_VWZ(31)=VIL_W1+ 79
  1355. 51815 VIL_VWX(32)=VIL_W2    :VIL_VWY(32)=VIL_W3
  1356. 51820 VIL_VWW(32)=VIL_W2+287:VIL_VWZ(32)=VIL_W3+223
  1357. 51830 GOSUB *VIL_FMTREAD
  1358. 51835 RETURN
  1359. 51845 *VIL_BGMFM
  1360. 51930 VIL_VWN=31:VIL_VWAT=15:VIL_VWT$="BGM FM"
  1361. 51935 GOSUB *VIL_VWOPEN
  1362. 51940 IF VIL_CDF THEN GOSUB *VIL_CDOFF
  1363. 51945 SYMBOL(8,8),"  FM音源BGM  ",1,1,6
  1364. 51950 SYMBOL(8,36),"1 BGM ["+KMID$("OFFON ",1-VIL_FMF*3,3)+"]"                     ,1,1,7
  1365. 51955 SYMBOL(8,56),"2 曲選択",1,1,7
  1366. 51965 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  1367. 51970 WHILE VIL_VWMR<>2
  1368. 51975   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+167:VIL_Z=VIL_Y+19
  1369. 51980   VIL_YL=20:VIL_XN=1:VIL_YN=2:VIL_BXDIR=0:VIL_C=15:VIL_MN=31
  1370. 51985   GOSUB *VIL_MSEL
  1371. 51990   IF VIL_KN<0 THEN
  1372. 51995     GOSUB *VIL_VWMCHECK
  1373. 52000   ELSE IF VIL_KN=0 THEN
  1374. 52005     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  1375. 52010   ELSE
  1376. 52015     GOSUB *VIL_GBEEP
  1377. 52020     ON VIL_KN GOSUB 52070,*VIL_FMSEL
  1378. 52025     VIL_X=104:VIL_Y=36:VIL_L=6:VIL_C=15:VIL_CB=VIL_VWCB
  1379. 52030     VIL_A$=KMID$("OFFON ",1-VIL_FMF*3,3)
  1380. 52035     GOSUB *VIL_GPRINT
  1381. 52040     VIL_VWMR=0
  1382. 52045   ENDIF
  1383. 52050 WEND
  1384. 52055 RETURN
  1385. 52070 IF VIL_FMF THEN
  1386. 52075   GOSUB *VIL_FMOFF
  1387. 52080 ELSE
  1388. 52085   IF VIL_FMINIT$="" THEN
  1389. 52090     GOSUB *VIL_BBEEP
  1390. 52100   ELSE
  1391. 52105     GOSUB *VIL_FMON
  1392. 52110   ENDIF
  1393. 52115 ENDIF
  1394. 52120 RETURN
  1395. 52130 *VIL_FMSEL
  1396. 52220 VIL_VWN=32:VIL_VWAT=15:VIL_VWT$="BGM SELECT"
  1397. 52225 GOSUB *VIL_VWOPEN
  1398. 52230 SYMBOL(8,8),"   FM音源BGM 曲選択",1,1,6
  1399. 52240 GOSUB 52380
  1400. 52250 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  1401. 52255 WHILE VIL_VWMR<>2
  1402. 52260   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+279:VIL_Z=VIL_Y+19
  1403. 52265   VIL_YL=20:VIL_XN=1:VIL_YN=9:VIL_BXDIR=0:VIL_C=15:VIL_MN=32
  1404. 52270   GOSUB *VIL_MSEL
  1405. 52275   IF VIL_KN<0 THEN
  1406. 52280     GOSUB *VIL_VWMCHECK
  1407. 52285   ELSE IF VIL_KN=0 THEN
  1408. 52290     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  1409. 52295   ELSE
  1410. 52300     IF VIL_KN=9 THEN
  1411. 52305       VIL_FMSP=VIL_FMSP+8:IF VIL_FMSP>VIL_FMTMAX THEN VIL_FMSP=0
  1412. 52310       GOSUB 52380
  1413. 52315     ELSE IF VIL_FMSP+VIL_KN-2<VIL_FMTMAX THEN
  1414. 52320       VIL_W0=INSTR(VIL_FMN$(VIL_FMSP+VIL_KN-1),"/")
  1415. 52325       VIL_F$=LEFT$(VIL_FMN$(VIL_FMSP+VIL_KN-1),VIL_W0-1)
  1416. 52330       VIL_A$= MID$(VIL_FMN$(VIL_FMSP+VIL_KN-1),VIL_W0+1)
  1417. 52340       GOSUB *VIL_FMDREAD
  1418. 52345     ENDIF
  1419. 52350     VIL_VWMR=0
  1420. 52355   ENDIF
  1421. 52360 WEND
  1422. 52365 RETURN
  1423. 52380 VIL_L=34:VIL_C=15:VIL_CB=VIL_VWCB
  1424. 52385 FOR VIL_I=0 TO 7
  1425. 52390   VIL_X=8:VIL_Y=VIL_I*20+36
  1426. 52395   VIL_A$=HEX$(VIL_I+1)
  1427. 52400   IF VIL_FMSP+VIL_I<=VIL_FMTMAX                                                   THEN VIL_A$=VIL_A$+" "+VIL_FMT$(VIL_FMSP+VIL_I)
  1428. 52405   GOSUB *VIL_GPRINT
  1429. 52410 NEXT
  1430. 52415 SYMBOL(8,196),"9          ~ 次頁 ~",1,1,7
  1431. 52420 RETURN
  1432. 52430 *VIL_FMTREAD
  1433. 52470 VIL_E=0
  1434. 52475 OPEN "I",#1,VIL_FMTDIR$+"FM_TITLE.VIL"
  1435. 52480 IF VIL_E=0 THEN
  1436. 52485   INPUT #1,VIL_FMTMAX:VIL_FMTMAX=VIL_FMTMAX-1
  1437. 52490     FOR VIL_I=0 TO VIL_FMTMAX
  1438. 52495     LINE INPUT #1,VIL_FMT$(VIL_I)
  1439. 52500     LINE INPUT #1,VIL_FMN$(VIL_I)
  1440. 52505   NEXT
  1441. 52510   CLOSE #1
  1442. 52515 ENDIF
  1443. 52520 RETURN
  1444. 52530 *VIL_FMDREAD
  1445. 52630 VIL_W0=VIL_FMF
  1446. 52635 IF VIL_W0 THEN GOSUB *VIL_FMOFF
  1447. 52640 VIL_A$=":"+VIL_A$
  1448. 52645 IF LEFT$(VIL_F$,1)<>"\" AND MID$(VIL_F$,2,1)<>":" THEN
  1449. 52650   VIL_F$=VIL_FMTDIR$+VIL_F$
  1450. 52655 ENDIF
  1451. 52660 OPEN "I",#1,VIL_F$
  1452. 52665 GOSUB 52795:IF VIL_W0$<>VIL_A$ THEN 52665
  1453. 52670 GOSUB 52795
  1454. 52675 IF VIL_W0$="*" THEN
  1455. 52680   LOAD@
  1456. 52685 ELSE
  1457. 52690   IF LEFT$(VIL_W0$,1)<>"\" AND MID$(VIL_W0$,2,1)<>":" THEN
  1458. 52695     VIL_W0$=VIL_FMTDIR$+VIL_W0$
  1459. 52700   ENDIF
  1460. 52705   LOAD@ VIL_W0$
  1461. 52710 ENDIF
  1462. 52715 GOSUB 52795:VIL_FMLB=VAL(VIL_W0$)
  1463. 52720 GOSUB 52795:VIL_FMLE=VAL(VIL_W0$)
  1464. 52725 GOSUB 52795:VIL_FMME=VAL(VIL_W0$)
  1465. 52730 GOSUB 52795:VIL_FMINIT$=VIL_W0$
  1466. 52740 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM0$(VIL_I)=VIL_W0$:NEXT
  1467. 52745 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM1$(VIL_I)=VIL_W0$:NEXT
  1468. 52750 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM2$(VIL_I)=VIL_W0$:NEXT
  1469. 52755 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM3$(VIL_I)=VIL_W0$:NEXT
  1470. 52760 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM4$(VIL_I)=VIL_W0$:NEXT
  1471. 52765 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM5$(VIL_I)=VIL_W0$:NEXT
  1472. 52770 CLOSE #1
  1473. 52775 IF VIL_W0 THEN GOSUB *VIL_FMON
  1474. 52780 RETURN
  1475. 52795 LINE INPUT #1,VIL_W0$:IF LEFT$(VIL_W0$,1)="'" THEN 52795
  1476. 52800 RETURN
  1477. 52810 *VIL_FMON
  1478. 52850 VIL_FMF=-1:VIL_FMP=0:VIL_FMT=0
  1479. 52855 PLAY VIL_FMINIT$
  1480. 52860 GOSUB *VIL_FMDRV
  1481. 52865 ON INTERVAL GOSUB *VIL_FMDRV:INTERVAL 1:INTERVAL ON
  1482. 52870 RETURN
  1483. 52880 *VIL_FMOFF
  1484. 52920 VIL_FMF=0:INTERVAL OFF:PLAY OFF
  1485. 52925 RETURN
  1486. 52935 *VIL_FMDRV
  1487. 52975 IF PLAY(1)>=VIL_FMP-1 THEN
  1488. 52980   VIL_FMP=VIL_FMP+.125!
  1489. 52985   PLAY VIL_FM0$(VIL_FMT),VIL_FM1$(VIL_FMT),VIL_FM2$(VIL_FMT),                      VIL_FM3$(VIL_FMT),VIL_FM4$(VIL_FMT),VIL_FM5$(VIL_FMT)
  1490. 52990   VIL_FMT=VIL_FMT+1
  1491. 52995   IF VIL_FMT>VIL_FMLE AND VIL_FMLS THEN VIL_FMT=VIL_FMLB
  1492. 53000   IF VIL_FMT>VIL_FMME THEN INTERVAL OFF:VIL_FMF=0
  1493. 53005 ENDIF
  1494. 53010 RETURN
  1495. 53155 *VIL_BGMCD_INITM
  1496. 53200 DIM VIL_CDI%(5),VIL_CDS%(8)
  1497. 53205 VIL_CDF=0
  1498. 53210 VIL_CDTS=0
  1499. 53215 VIL_CDMS=0
  1500. 53220 VIL_CDPN=1
  1501. 53225 VIL_VWX(33)=VIL_W0    :VIL_VWY(33)=VIL_W1
  1502. 53230 VIL_VWW(33)=VIL_W0+243:VIL_VWZ(33)=VIL_W1+115
  1503. 53240 RETURN
  1504. 53250 *VIL_BGMCD
  1505. 53340 VIL_VWN=33:VIL_VWAT=15:VIL_VWT$="BGM CD"
  1506. 53345 GOSUB *VIL_VWOPEN
  1507. 53350 IF VIL_FMF THEN GOSUB *VIL_FMOFF
  1508. 53355 LINE(0,0)-(243,115),PSET,%2,BF
  1509. 53360 SYMBOL(57,4),"CDDA BGM-PLAYER",1,1,4,,,3
  1510. 53365 FOR VIL_I=26 TO 72 STEP 46
  1511. 53370   FOR VIL_J=52 TO 152 STEP 50
  1512. 53375     LINE(VIL_J,VIL_I)-(VIL_J+39,VIL_I+37),PSET,%VIL_VWCB,BF
  1513. 53380   NEXT
  1514. 53385 NEXT
  1515. 53395 LINE(  6,72)-( 41,109),PSET,%VIL_VWCB,BF
  1516. 53400 LINE(202,72)-(237,109),PSET,%VIL_VWCB,BF
  1517. 53410 VIL_E=0
  1518. 53415 CDINF VIL_CDI%
  1519. 53420 IF VIL_E THEN
  1520. 53425   VIL_WX=VIL_WX+2:VIL_WY=VIL_WY+64
  1521. 53430   VIL_WW=VIL_WX+239:VIL_WZ=VIL_WY+31
  1522. 53435   VIL_VWAT=0:VIL_VWT$="ERROR":VIL_VWN=0
  1523. 53440   GOSUB *VIL_VWOPEN
  1524. 53445   SYMBOL(8,8),"CDがセットされていません。",1,1,7
  1525. 53450   GOSUB *VIL_MVWAIT
  1526. 53455   GOSUB *VIL_VWCLOSE:GOSUB *VIL_VWCLOSE
  1527. 53460 ELSE
  1528. 53465   IF VIL_CDI%(1)=3 THEN VIL_CDI%(1)=2 
  1529. 53470   IF VIL_CDPN<VIL_CDI%(1) THEN VIL_CDPN=VIL_CDI%(1)
  1530. 53475   IF VIL_CDI%(5)<VIL_CDPN THEN VIL_CDPN=VIL_CDI%(1)
  1531. 53485   SYMBOL( 56,28),"MODE",1,1,7
  1532. 53490   SYMBOL(110,28),"BGM",1,1,7
  1533. 53495   SYMBOL(156,28),"TEST",1,1,7
  1534. 53500   SYMBOL( 57,76),"<",2,2,7
  1535. 53505   SYMBOL(157,76),">",2,2,7
  1536. 53510   SYMBOL(  8,76),FNVIL_P2S0$(VIL_CDI%(1),2),2,2,7
  1537. 53515   SYMBOL(204,76),FNVIL_P2S0$(VIL_CDI%(5),2),2,2,7
  1538. 53520   SYMBOL(106,76),FNVIL_P2S0$(VIL_CDPN,2),2,2,7
  1539. 53525   GOSUB 53855
  1540. 53530   GOSUB 53835
  1541. 53540   VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  1542. 53545   WHILE VIL_VWMR<>2
  1543. 53550     VIL_X=50:VIL_Y=24+46:VIL_W=VIL_X+43:VIL_Z=VIL_Y+41
  1544. 53555     VIL_XL=50:VIL_YL=46:VIL_XN=3:VIL_YN=2:VIL_BXDIR=4:VIL_C=15
  1545. 53560     VIL_MN=33
  1546. 53565     GOSUB *VIL_MSEL
  1547. 53570     IF VIL_KN<0 THEN
  1548. 53575       GOSUB *VIL_VWMCHECK
  1549. 53580     ELSE IF VIL_KN=0 THEN
  1550. 53585       GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  1551. 53590     ELSE
  1552. 53595       ON VIL_KN GOSUB 53725,53740,53815,53635,53655,53705
  1553. 53600       VIL_VWMR=0
  1554. 53605     ENDIF
  1555. 53610   WEND
  1556. 53615 ENDIF
  1557. 53620 RETURN
  1558. 53635 VIL_CDMS=NOT VIL_CDMS
  1559. 53640 GOSUB 53855 
  1560. 53645 RETURN
  1561. 53655 VIL_CDF=NOT VIL_CDF
  1562. 53660 IF VIL_CDF THEN
  1563. 53665   INTERVAL 1:ON INTERVAL GOSUB *VIL_CDDRV:INTERVAL ON
  1564. 53670   GOSUB *VIL_CDDRV
  1565. 53675 ELSE
  1566. 53680   INTERVAL OFF:CD STOP
  1567. 53685 ENDIF
  1568. 53690 GOSUB 53855
  1569. 53695 RETURN
  1570. 53705 VIL_CDTS=NOT VIL_CDTS
  1571. 53710 GOSUB 53855
  1572. 53715 RETURN
  1573. 53725 VIL_CDPN=VIL_CDPN-1:IF VIL_CDPN<VIL_CDI%(1) THEN VIL_CDPN=VIL_CDI%(5)
  1574. 53730 GOSUB 53830:RETURN
  1575. 53740 VIL_WX=VIL_WX+64:VIL_WY=VIL_WY+32:VIL_WW=VIL_WX+111:VIL_WZ=VIL_WY+51
  1576. 53745 VIL_VWAT=0:VIL_VWT$="INPUT":VIL_VWN=0
  1577. 53750 GOSUB *VIL_VWOPEN
  1578. 53755 SYMBOL(8,8),"トラック番号",1,1,6
  1579. 53760 VIL_X=32:VIL_Y=28:VIL_L=2:VIL_C=15:VIL_CB=VIL_VWBC:VIL_A$=""
  1580. 53765 GOSUB *VIL_INPSTR
  1581. 53770 IF VIL_A$>"" THEN
  1582. 53775   IF VAL(VIL_A$)<VIL_CDI%(1) OR VIL_CDI%(5)<VAL(VIL_A$) THEN
  1583. 53780      GOSUB *VIL_BBEEP:GOTO 53765
  1584. 53785   ENDIF
  1585. 53790 ENDIF
  1586. 53795 GOSUB *VIL_VWCLOSE
  1587. 53800 IF VIL_A$>"" THEN VIL_CDPN=VAL(VIL_A$):GOSUB 53830
  1588. 53805 RETURN
  1589. 53815 VIL_CDPN=VIL_CDPN+1:IF VIL_CDPN>VIL_CDI%(5) THEN VIL_CDPN=VIL_CDI%(1)
  1590. 53820 GOSUB 53830:RETURN
  1591. 53830 IF VIL_CDTS=-1 THEN CD PLAY VIL_CDPN
  1592. 53835 LINE(102,72)-(141,109),PSET,%VIL_VWCB,BF
  1593. 53840 SYMBOL(106,76),FNVIL_P2S0$(VIL_CDPN,2),2,2,7
  1594. 53845 RETURN
  1595. 53855 LINE(60,46)-(83,61),PSET,%VIL_VWCB,BF
  1596. 53860 SYMBOL(60,46),MID$("ONEALL",1-VIL_CDMS*3,3),1,1,7
  1597. 53865 LINE(110,46)-(133,61),PSET,%VIL_VWCB,BF
  1598. 53870 SYMBOL(110,46),MID$("OFFON",1-VIL_CDF*3,3),1,1,7
  1599. 53875 LINE(162,46)-(185,61),PSET,%VIL_VWCB,BF
  1600. 53880 SYMBOL(162,46),MID$("OFFON",1-VIL_CDTS*3,3),1,1,7
  1601. 53885 RETURN
  1602. 53895 *VIL_CDON
  1603. 53935 VIL_CDF=-1
  1604. 53940 GOSUB *VIL_CDDRV
  1605. 53945 INTERVAL 1:ON INTERVAL GOSUB *VIL_CDDRV:INTERVAL ON
  1606. 53950 RETURN
  1607. 53960 *VIL_CDOFF
  1608. 53995 VIL_CDF=0:INTERVAL OFF:CD STOP
  1609. 54000 RETURN
  1610. 54010 *VIL_CDDRV
  1611. 54060 VIL_E=0
  1612. 54065 CDSTAT VIL_CDS%
  1613. 54070 IF VIL_E THEN
  1614. 54075   VIL_CDF=0:INTERVAL OFF
  1615. 54080 ELSE IF VIL_CDS%(1)=0 THEN
  1616. 54085   IF VIL_CDMS THEN CD PLAY ELSE CD PLAY VIL_CDPN
  1617. 54090 ENDIF
  1618. 54095 RETURN
  1619.